反轉字符串
題目:將輸入的字符串翻轉後輸出。如abcd輸出爲dcba。
思路:將字符串轉換爲字符數組,倒着遍歷。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String reverse = "";
char[] ch = s.toCharArray();
for(int i=ch.length-1;i>=0;i--) {
reverse+=ch[i];
}
System.out.print(reverse);
}
找朋友
題目:每個案例第一行兩個整數N,M。接下來有N行,第i(i = 1,2,…,N)行每一行有一個數,表示讀者i-1最喜歡的圖書的編號P。輸出N行,每行一個數,第i行的數表示讀者i有幾個潛在朋友。如果i和任何人都沒有共同喜歡的書,則輸出“BeiJu”。
思路:定義兩個數組分別存放每個人喜歡的圖書編號和喜歡某圖書的人數。最後由題意可得,對於每一位讀者,遍歷他喜歡的書的人數是否超過1,超過則計算人數(-1),否則輸出“BeiJu”。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int N=0, M=0;
N = in.nextInt();M=in.nextInt();
int[] f = new int[N];
int[] book = new int[M];
for (int i=0;i<N;i++) {
f[i]=in.nextInt();
book[f[i]]++;
}
for (int i=0;i<N;i++) {
if(book[f[i]]>1) {
System.out.println(book[f[i]]-1);
}else {
System.out.println("BeiJu");
}
}
in.close();
}
計算int型二進制1的個數
題目:計算int
型二進制1的個數。即將數轉爲二進制後,統計1的個數。如輸入5,輸出2.
思路:利用Integer
類裏的toBinaryString
方法,將輸入的int
型整數轉換成二進制字符串,對其進行遍歷統計1的個數。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int sum = 0;
String result = Integer.toBinaryString(n);
for (int i=0;i<result.length();i++) {
//charAt:利用下標進行字符串定位
if(result.charAt(i)=='1')sum++;
}
System.out.print(sum);
in.close();
}
情報加密
題目:對給定的一個字符串,把其中從a-y,A-Y的字母用其後繼字母替代,把z和Z用a和A替代。可能有多組測試數據。每組測試數據的第一行是字符串的數目n,其餘n行每行一個字符串,每個字符串長度小於80個字符。對於每組數據,輸出每行字符串的加密字符串。
輸入 1 (回車) Hello! How are you!
輸出 Ifmmp! Ipx bsf zpv!
思路:因爲可能有多組測試數據,因此需要while(in.hasNextInt())
進行判斷,當下一個輸入是整數型時則接收輸入且以此設定循環。循環內根據條件進行修改即可,注意強制類型轉換。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
while(in.hasNextInt()) {
int n = in.nextInt();
for(int i=0;i<n;i++) {
//按行讀入
String s = in.nextLine();
String change = "";
for(int j=0;j<s.length();j++) {
if((s.charAt(j)>='a'&&s.charAt(j)<'z')||(s.charAt(j)>='A'&&s.charAt(j)<'Z')) {
change+=(char)(s.charAt(j)+1);
}else if(s.charAt(j)=='Z'||s.charAt(j)=='z') {
change+=(char)(s.charAt(j)-25);
}else {
change+=s.charAt(j);
}
}
System.out.println(change);
}
}
in.close();
}
計算日期
題目:給出年分m和一年中的第n天,算出第n天是幾月幾號。輸入包括兩個整數y,n。可能有多組測試數據,對於每組數據,按yyyy-mm-dd的格式將輸入中對應的日期打印出來。
樣例輸入 | 樣例輸出 |
---|---|
2000 3 | 2000-01-03 |
2000 31 | 2000-01-31 |
2000 40 | 2000-02-09 |
2000 60 | 2000-02-29 |
思路:
使用java自帶的Calendar
類進行解題。
注意:calendar類默認0爲一月。
get(Calendar.DAY_OF_MONTH);//獲得這個月的第幾天
get(Calendar.DAY_OF_WEEK);//獲得這個星期的第幾天
get(Calendar.DAY_OF_YEAR);//獲得這個年的第幾天
getTimeMillis();//獲得當前時間的毫秒錶示
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar calendar = Calendar.getInstance();//獲取一個calendar實例
Scanner in = new Scanner(System.in);
int y=0,n=0;
while(in.hasNextInt()) {
y = in.nextInt();
n = in.nextInt();
calendar.set(Calendar.YEAR, y);
calendar.set(Calendar.MONTH, 0);//月份設置
calendar.set(Calendar.DAY_OF_MONTH, 0);//月中的第幾天
calendar.add(Calendar.DATE, n);//指一個月中的某天,與DAY_OF_MONTH同義
//格式化輸出
SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd");
String time = format0.format(calendar.getTime());
System.out.println(time);
}
in.close();
}
求近似數
題目:求小數四捨五入後的結果
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.print(Math.round(in.nextDouble()));
in.close();
}
輸出較小數
題目:輸入n個整數,輸出其中最小的k個。
如輸入 5 2
1 3 5 7 2
輸出 1 2
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
int[] m = new int[n];
for(int i=0;i<n;i++) {
m[i] = in.nextInt();
}
//數組排序函數
Arrays.sort(m);
for(int i=0;i<k;i++) {
System.out.print(m[i]+" ");
}
in.close();
}