常见的三个字符串问题
问题1、从第一个字符串中删除在第二个字符串中出现的所有字符。
问题描述
定义一个函数,输入两个字符串,从第一个字符串中删除在第二个字符串中出现的所有字符。
public class Code028_05 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str1=sc.nextLine();
String str2=sc.nextLine();
removeSubString(str1,str2);
}
private static void removeSubString(String str1,String str2){
if(str1.length()==0 || str2.length()==0){
return;
}
ArrayList<Character> list=new ArrayList<>();
for(int i=0;i<str1.length();i++){
if(!(str2.contains(str1.charAt(i)+""))){
list.add(str1.charAt(i));
}
}
for(int k=0;k<list.size();k++){
System.out.print(list.get(k)+"");
}
}
}
问题2、删除字符串中所有重复出现的字符
public class Code028_05 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str1=sc.nextLine();
String str2=sc.nextLine();
removeRepeat(str1);
}
private static void removeRepeat(String string){
if(string.length()==0){
return;
}
// Vector<Character> vector=new Vector<>();
// for(int i=0;i<string.length();i++){
// if(!vector.contains(string.charAt(i))){
// vector.add(string.charAt(i));
// }
// }
// for(int i=0;i<vector.size();i++){
// System.out.print(vector.get(i)+"");
// }
HashMap<Integer,Character> map=new HashMap<>();
for(int i=0;i<string.length();i++){
if(!map.containsValue(string.charAt(i))){
map.put(i,string.charAt(i));
}
}
// for(char ch:map.values()){
// System.out.print(ch+"");
// }
for(int key:map.keySet()){
System.out.print(map.get(key)+"");
}
}
}
问题3、变位词问题
问题描述
在英语中,如果两个单词出现的字母相同,并且每个字母出现的次数也相同,那么两个单词护卫变位词。定义函数,是否互为变位词。输入两个字符串,判断是否互为变位词
public class Code028_05 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str1=sc.nextLine();
String str2=sc.nextLine();
boolean result=isVariant(str1,str2);
System.out.print(result);
}
private static boolean isVariant(String str1,String str2){
if(str1.length()==0 || str2.length()==0 ||str1.length()!=str2.length()){
return false;
}
HashMap<Character,Integer> map=new HashMap<>();
for(int i=0;i<str1.length();i++){
if(map.containsKey(str1.charAt(i))){
int value=map.get(str1.charAt(i));
value+=1;
map.put(str1.charAt(i),value);
}else {
map.put(str1.charAt(i),1);
}
}
for(int i=0;i<str2.length();i++){
if(map.containsKey(str2.charAt(i))){
int value2=map.get(str2.charAt(i));
value2-=1;
map.put(str2.charAt(i),value2);
}else {
return false;
}
}
for(int v:map.values()){
if(v>0){
return false;
}
}
return true;
}
}