查找即使字母移动后仍保持不变的单词数

时间:2019-05-01 17:09:27

标签: java string

我正在查看一个代码,即-将每个单词的字符从左到右旋转K次。查找即使字母移动后仍保持不变的单词数。

input1:字符串

input2:K,发生旋转的次数

函数应返回正确的单词数。

   class test{
   public int rotateWords(String input1, int input2){
    String tmp = input1+input1;
    int n= input1.length();
    for(int i=1;i<=n;i++){
          String substring = tmp.substring(i,input1.size());
          if(input1==substring)
          return i;
    }
    if(len==input2)
     return 1;
    else
     return 0;
    }
    }

示例1:输入1:输入,输入2:2,输出:0

示例2:input1:adaada,input2:3,output:1

在示例1中,“ llerhe ereth”是旋转的字符串。因此,原始字符串是“ hello there”,这是不正确的。因此答案是0。

在示例2中,旋转3次后的“ adaada”将返回“ adaada”。因此答案是1。

现在问题出在示例中,他们知道如何假设原始字符串是“ hello there”。我也没有得到写输出。任何建议,不胜感激。

预先感谢

1 个答案:

答案 0 :(得分:0)

根据描述,我了解的是,如果输入的内容为“ hello there”,则为no。旋转数为5,则该函数应在5次旋转之后检查“ hello”和“那里”是否相同。 (让我知道我是否误解了。)

如果是这种情况,则可以通过以下解决方案解决问题

public int rotateWords(String str,int rotations){
    int ans=0;
    String[] words=str.split("\\s+"); // seperate each word by space
    for(int k=0;k<words.length;k++){ 
        String s= words[k];
        for(int i=0;i<rotations;i++){  // rotate the word for given no. of rotations
            String temp = s.substring(1,s.length())+s.charAt(0);
            s = temp;
        }
        if(s.equals(words[k])){ // after the rotations check whether it's the same word or not
            ans++; // increase the counter if we got the same word after iterations
        }
    }
    return ans;
}