比较二叉树

时间:2015-08-31 12:54:21

标签: java

这是检查二叉树中相似单词的作业的一部分。我已经坚持这个bug太久了,非常感谢任何帮助解决这个问题。

  • 输入:字符串“achiev”
  • 输出:接受的所有字符串 [a-z]实现或[a-z] chiev或......或实现[a-z]

  • 问题:算法生成字符串“achieve”,但.compareTo()和.equals()则表示不然。

    public class Problem {
    
    static ArrayList<String> oneRedundantChar(String s) {
    
    char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();
    char[] arr = new char[(s.length()*2) + 1];
    char[] sarr = s.toCharArray();
    
    for (int i = 1; i < arr.length; i+= 2) {
        arr[i] = sarr[(i-1)/2];
    }
    char[] temp = arr.clone();
    
    ArrayList<String> reparr = new ArrayList<>();
    
    for (int i = 0; i < s.length()*2+1; i += 2) {
        for (int j = 0; j < alphabet.length; j++) {
            arr[i] = alphabet[j];
            reparr.add(String.valueOf(arr));
        }
        arr = temp.clone();
    }
    
    return reparr;
    }
    
    public static void main(String[] args) {
        for (String s : oneRedundantChar("achiev")) {
    
        System.out.println(s);
    
        if (s.compareTo("achieve") == 0) {
            System.out.println("Success");
        }
        if(s.equals("achieve")) {
            System.out.println("Success");
        }
    

1 个答案:

答案 0 :(得分:0)

你的&#34; s&#34;字符串是间隔开的(例如,&#34; a v h e v&#34;),冗余字符放在空间的某处。即使&#34;实现&#34;是生成的,它是空格(&#34; a c h i e ve&#34;),这显然与equals相比不同,或者比较为&#34;实现&#34;。将生成的字符串放入结果数组(reparr.add(String.valueOf(arr));)时,只需选择非空字符。