挑战编程技能之字母异位词检查程序
2018-03-14 20:42
225 查看
1.程序要求
比较输入的两个字符串是否为字母异位词,也就是两个字符串包含字母相同,只是顺序不同。 2.思路
获取字符串输入字符串转为list集合,便于移除和索引
循环匹配每个字母,若有相同字母则移除,若有字母未匹配到则退出循环
判断两个list是否都为空,是则结果为true,否则为false
3.java程序
import java.util.ArrayList;import java.util.List;
import java.util.Scanner;
public class AnagramCheck {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "abcd";
String str2 = "sdac";
Scanner scanner = new Scanner(System.in);
System.out.println("Enter two string and I'll tell you if they are anagrams: ");
System.out.print("Enter the first string: ");
do{
if (scanner.hasNextLine()){
str1 = scanner.nextLine();
break;
}
}while(true);
System.out.print("Enter the second string: ");
do{
if (scanner.hasNextLine()){
str2 = scanner.nextLine();
break;
}
}while(true);
scanner.close();
boolean b = isAnagram(str1,str2);
if (b){
System.out.print("\"" + str1 + "\" and \"" + str2 + "\" are anagrams.");
}else
System.out.print("\"" + str1 + "\" and \"" + str2 + "\" aren't anagrams.");
}
private static boolean isAnagram(String str1, String str2) {
// TODO Auto-generated method stub
boolean result = false;
if (str1.length() != str2.length()){
return result;
}
List<Character> list1 = new ArrayList<Character>();
List<Character> list2 = new ArrayList<Character>();
char[] str1Char = str1.toCharArray();
char[] str2Char = str2.toCharArray();
for (int i = 0;i < str1Char.length;i++){
list1.add(str1Char[i]);
}
for (int i = 0;i < str2Char.length;i++){
list2.add(str2Char[i]);
}
for (int i = 0;i < list2.size();i++){
if (list2.contains(list1.get(i))){
list2.remove(list1.get(i));
list1.remove(i);
//System.out.println(list1);
//System.out.println(list2);
//如果进入if则说明包含同一个字符,删除之后i要重置为0
i--;
}else
break;
}
if (list2.isEmpty() && list1.isEmpty()){
result = true;
}
return result;
}
}
相关文章推荐
- 挑战编程技能之检查密码强度
- javascript挑战编程技能-第六题:检查密码强度
- 3. 串的处理 在实际的开发工作中,对字符串的处理是最常见的编程任务。 本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与
- javascript挑战编程技能-第四题:谈个if讲点逻辑
- 挑战编程技能(第一章)
- javascript挑战编程技能-第八题:99乘法表
- javascript挑战编程技能-第九题:数据结构
- 挑战编程技能之验证输入
- 上一篇编程挑战题目参考程序
- javascript挑战编程技能-第二题:计算字符数
- 程序猿们如何提高自己的编程技能?
- javascript挑战编程技能-第一题:将问题转变成代码
- javascript挑战编程技能-第五题:函数作为javascript的一等公民
- 挑战编程技能之密码生成器
- javascript挑战编程技能-第三题:计算矩形房间面积
- [图灵赠书]《挑战编程技能:57道程序员功力测试题》微博转发赠书
- 编写一个程序,使其从标准输入读取字符,直到遇到文件结尾。对美个字符 程序需要检查并报告改字符是否是一个字母。如果是报告字母在字符表中的位置,否则返回-1
- javascript挑战编程技能-第七题:让代码做重复的事情
- 串的处理 在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与字母之间用下划线字符(_)分
- 挑战编程技能之第一章练习