firstLetter = word.charAt(0);
lastLetter = word.charAt((word.length()) - 1);
noFirstLetter = word.substring(1);
newWord = noFirstLetter + firstLetter;
if(word.equalsIgnoreCase(newWord))
所以我试着取出单词的第一个字母,如果我取出单词的第一个字母并将其移到最后它应该等于同一个单词。我的代码在这里不起作用。例如,如果用户输入" dresser"如果你移动" d"在这个词的最后,你得到了#34; dresser"再次。这就是我试图检查的内容
答案 0 :(得分:4)
我认为你要做的是删除第一个字符,然后检查其余字符是否围绕单词的中心对称。(好吧,即使对我来说也很复杂)
EG:
dresser => (drop d)=> resser => (在右边添加d)=> resserd(从右到左阅读,它再次是梳妆台)。
放下第一个字母后:
resser(单词中有偶数个字母)
r e s s e r
|_|
|_____|
|_________|
因为它们是对称的,所以如果你把D从左向右移动(反之亦然),你可以说那个单词就是Palindromic。
如果我在第一时间误解了你的问题,那么上述所有内容都可能是错误的。但我想,你的问题不是一个简单的子串问题。
干杯。
答案 1 :(得分:3)
好的,所以我假设你想要一个string
,将它的第一个索引移到最后,然后反转string
。如果对“dresser”这样的单词执行此操作,则最终会得到相同的值。
这样的事情可行,目前未经测试:
public StringBuilder reverseWord(String word){
firstLetter = word.charAt(0); //find the first letter
noFirstLetter = word.substring(1); //removing the first index
newWord = noFirstLetter + firstLetter; //move first index to end
return new StringBuilder(newWord).reverse().toString(); //reverse
}
if(reverseWord("dresser").equals("dresser")){
//do something
}
编辑:正如Jose指出的那样,通过在length()
上调用word
来检查实际参数的长度非常重要。
答案 2 :(得分:1)
如果你移动' d'到了#34; dresser"这个词的末尾你得到" resserd"这不等于"梳妆台"。
如果你移动' d'到最后然后反转这个词然后他们是平等的。
因此,假设您认为字符串等于它们是相反的,那么您想要的代码就是:
boolean testPass = false;
if ( word.length()==0 )
testPass = true;
else
{
firstLetter = word.charAt(0);
noFirstLetter = word.substring(1);
newWord = noFirstLetter + firstLetter;
reversed = new StringBuilder(newWord).reverse().toString()
if (word.equalsIgnoreCase(newWord) || word.equalsIgnoreCase(reversed))
testPass = true;
}
if ( testPass )
// Do something
注意长度为0的单词的重要检查。否则word.charAt(0)将抛出异常。