簡體   English   中英

java替換字符串中的char

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM