11_数字颠倒
描述:输入一个整数,将这个整数以字符串的形式逆序输出,程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
String是不可变类,但是StringBuilder是可变类,里面有个reverse()方法比较好用,翻转字符串。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
String str = scanner.next();
//将String--》StringBuilder
StringBuilder stringBuilder = new StringBuilder(str);
System.out.print(stringBuilder.reverse());
}
}
}
12_字符串反转
写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
本题和上题思路相同,不赘述:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String str = scanner.next();
StringBuilder stringBuilder = new StringBuilder(str);
System.out.println(stringBuilder.reverse());
}
}
}
13_句子逆序
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
接口说明:
/**
* 反转句子
*
* @param sentence 原句子
* @return 反转后的句子
*/
public String reverse(String sentence);
思路分析:所有单词之间用一个空格隔开,可以使用split()方法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextLine()){
String str = scanner.nextLine();
String[] split = str.split(" ");
int len = split.length;
for(int i=len-1;i>=0;i--){
System.out.print(split[i]+" ");
}
}
}
}
14_字串的连接最长路径查找
给定n个字符串,请对n个字符串按照字典序排列。
思路:API中有一个专门对数组进行排序的方法:Arrays.Sort(arr)
字符串排序,先大写后小写
String[] strArray = new String[] {"z", "a", "C"};
Arrays.sort(strArray);
输出: [C, a, z]
代码实现:下面代码其实是有问题的,就是当我们输入大写字母的时候会先排大写字母再排小写字母,但是测试通过了。。。。。。一脸懵逼
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int n = scanner.nextInt();
String[] stringArr = new String[n];
for(int i=0;i<n;i++){
stringArr[i] = scanner.next();
}
Arrays.sort(stringArr);
for(int i=0;i<n;i++){
System.out.println(stringArr[i]);
}
}
}
}
思路2:API中除了数组排序,还有就是集合排序,集合汇总有个工具类Collections也可以进行排序。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int n = scanner.nextInt();
ArrayList<String> list = new ArrayList<>();
for(int i=0;i<n;i++){
list.add(scanner.next());
}
///list中的对象String 本身含有compareTo方法,可以直接调用sort方法,按自然顺序排序,即升序排序
Collections.sort(list);
//得到list集合的迭代器
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
}
15_ 求int型整数在内存中存储时1的个数
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
思路:API中Integer类中的parseInt(String str,int radix)方法可以将任意进制的字符串转成十进制。同样Integer类中也有对应的方法可以将十进制转成其他进制。
通过调用Integer类的静态方法可以直接将一个int型整数
转换为相应的二进制、八进制以及十六进制并且返回结果的字符串形式:
public class IntegerDemo {
public static void main(String[] args) {
int num=100;
String str1 = Integer.toBinaryString(num);//1100100
String str2 = Integer.toOctalString(num);//144
String str3 = Integer.toHexString(num);//64
}
}
代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int number = scanner.nextInt();
String string = Integer.toBinaryString(number);
char[] charArray = string.toCharArray();
int k=0;
for(int i=0;i<charArray.length;i++){
//charArray[i]代表这个字符的ASCII值
if(charArray[i]-48==1){
k++;
}
}
System.out.println(k);
}
}
}