Isogram-没有重复字母的单词

时间:2017-02-25 21:15:21

标签: java sorting

我想开发一个java代码来检测单词中的重复字母并打印出所需的结果但是我一直在迭代,我不知道如何解决它。这是代码:

import java.util.*;
public class Isogram {

    public static void main(String[] args){

        Scanner input = new Scanner(System.in);

        System.out.println("Enter the name: ");

        String car = input.nextLine().toLowerCase();
        char[] jhd = car.toCharArray();
        Arrays.sort(jhd);

        for(int ch = 0; ch < jhd.length; ch++){
            try {
                if (jhd[ch] == jhd[ch + 1]) {// || jhd[ch] == jhd[ch]){
                    System.out.print("THis is an Isogram");
                } else {
                    System.out.println("Ripu from here");
                }
            } catch(ArrayIndexOutOfBoundsException ae) {
                System.out.println(ae);
            }    
        }
    }
}

如果你有一个调整或更好的代码,它会有所帮助。

2 个答案:

答案 0 :(得分:1)

private static String isIsogram(String s){
        String[] ary = s.split("");
        Set<String> mySet = new HashSet<String>(Arrays.asList(ary));

        if(s.length() == mySet.size()){
            return "Yes!";
        }else{
            return "NO";
        }
    }
  1. 从字符串中创建一个数组。

  2. 将数组转换为List,然后从该List创建Set。设置
    只保留唯一值。

  3. 如果set size等于初始字符串长度,那么它是一个         等值线。如果set小于初始字符串那么就有了         重复的字符。

答案 1 :(得分:0)

    public static boolean isIsogram(String str) {

       boolean status = true;
       char [] array = str.toCharArray();
       Character[] charObjectArray = ArrayUtils.toObject(array);
       Map<Character,Integer> map = new HashMap<>();

       for (Character i : charObjectArray){
          Integer value = 1;
          if (map.containsKey(i)){
            Integer val = map.get(i);
            map.put(i,val+1);
          }
          else map.put(i,value);
       }

       for (Integer integer: map.values()){
          if (integer>1){
            status= false;
            break;
          }
          else status = true;
        }
        return status;
}

}