我正在查看一个代码,即-将每个单词的字符从左到右旋转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”。我也没有得到写输出。任何建议,不胜感激。
预先感谢
答案 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;
}