1. 提取不重复的数字
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
1.1 分析
注意去重的同时要保证数字要按照输入顺序打印——LinkedHashSet
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char[] chs=str.toCharArray();
Set<Character> set=new LinkedHashSet<>();
for(int i=chs.length-1;i>=0;i--)
set.add(chs[i]);
String result="";
for(Character c:set)
result+=c;
System.out.println(result);
}
}
注:
1.Set的遍历
对 set 的遍历
1.迭代遍历:
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
2.for循环遍历:
for (String str : set) {
System.out.println(str);
}
优点还体现在泛型 假如 set中存放的是Object
Set<Object> set = new HashSet<Object>();
for循环遍历:
for (Object obj: set) {
if(obj instanceof Integer){
int aa= (Integer)obj;
}else if(obj instanceof String){
String aa = (String)obj
}
........
}
2.
HashSet:不保证元素输出顺序
LinkedHashSet :有序的HashSet(按照存入集合的顺序打印)
2.字符个数统计
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
2.1 分析
直接使用Set去重,输出set的大小
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
char[] chs=sc.nextLine().toCharArray();
Set<Character> set=new HashSet<>();
for(int i=0;i<chs.length;i++)
set.add(chs[i]);
System.out.println(set.size());
}
}
3. 数字颠倒
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
char[] chs=sc.nextLine().toCharArray();
String str="";
for(int i=chs.length-1;i>=0;i--)
str+=chs[i];
System.out.println(str);
}
}
4. 字符串反转
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
System.out.println(new StringBuffer(str).reverse().toString());
}
}
注:
1.String没有reverse()方法
2.字符串反转的方法
- 利用 StringBuffer 或 StringBuilder 的 reverse 成员方法:
// StringBuffer
public static String reverse1(String str) {
return new StringBuilder(str).reverse().toString();
}
- 利用 String 的 toCharArray 方法先将字符串转化为 char 类型数组,然后将各个字符进行重新拼接:
// toCharArray
public static String reverse2(String str) {
char[] chars = str.toCharArray();
String reverse = "";
for (int i = chars.length - 1; i >= 0; i--) {
reverse += chars[i];
}
return reverse;
}
- 利用 String 的 CharAt 方法取出字符串中的各个字符:
// charAt
public static String reverse3(String str) {
String reverse = "";
int length = str.length();
for (int i = 0; i < length; i++) {
reverse = str.charAt(i) + reverse;
}
return reverse;
}