[英]java replacing char in string
firstLetter = word.charAt(0);
lastLetter = word.charAt((word.length()) - 1);
noFirstLetter = word.substring(1);
newWord = noFirstLetter + firstLetter;
if(word.equalsIgnoreCase(newWord))
因此,我試圖取下單詞的第一個字母,如果我取下單詞的第一個字母並將其移到末尾,則它應等於同一單詞。 我的代碼在這里不起作用。 例如,如果用戶輸入“ dresser”,而將“ d”移到單詞的末尾,則再次得到單詞“ dresser”。 那就是我試圖檢查的
我認為您要嘗試刪除的是第一個字符,然后檢查其余字符是否圍繞單詞中心對稱(即使對我來說也很復雜)
例如:
梳妝台=>(放置d)=>梳妝台=>(向右添加d)=>梳妝台(從右到左讀取,它又是梳妝台)。
刪除第一個字母后:
梳妝台(單詞中字母的偶數)
r e s s e r
|_|
|_____|
|_________|
由於它們是對稱的,因此可以說,如果您從左向右移動D(反之亦然),則該單詞將是回文。
如果我首先誤解了您的問題,那么上面的整個事情可能是非常錯誤的。 但是我認為,您的問題不是一個簡單的子字符串問題。
干杯。
好的,我假設您要獲取一個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指出的,通過在word
上調用length()
來檢查實際參數的長度很重要。
如果將“ d”移到單詞“ dresser”的末尾,則會得到“ resserd”,它不等於“ dresser”。
如果將“ 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)將引發異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.