好的,所以我正在编写一个程序,告诉用户他们放入命令行的单词是否是等值线图,我遇到了困难。
我究竟如何将用户输入的char数组与另一个进行比较,以查看它是否有多于一个的字母?
我有这个,我很困惑从哪里开始。
char[] alphabet = new char[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
char[] wordLetters = word.toCharArray();
boolean blnResult = Arrays.equals(alphabet,wordLetters);
我确信我对此采取了完全错误的方式,但我应该如何比较两者以获得结果呢?
答案 0 :(得分:2)
如果我理解你的问题,我就会这样做:
String isogram = "salad";
boolean isIsogram = !isogram.matches( ".*(.).*\\1.*" );
System.out.println( isIsogram );
或效率低但是如果你必须使用数组:
String isogram = "salad";
boolean isIsogram = true;
for ( int i = 0; i < isogram.length(); i++ ) {
for ( int j = 0; j < isogram.length(); j++ ) {
if ( i != j && isogram.charAt( i ) == isogram.charAt( j ) && ( Character.isLetter( isogram.charAt( i ) ) ) ) {
isIsogram = false;
}
}
}
System.out.println( isIsogram );
答案 1 :(得分:0)
基本上,等值线是没有重复字母的单词或短语。
代码形式的函数签名或程序输出期望有助于更好地回答。
但是,考虑到你正在处理一个返回true或false的函数: 设置是实现它的方法。 继续将字符放在Set或HashMap中,如果在插入集合时,字符已经存在于set中,则将响应返回为false,否则返回true。