我有一個字符串,並且想要將其反轉,以便某些字符得到反轉,而其他字符保持原位。我怎樣才能實現這一點(例如,讓我說所有的字母在所有的數字保持不變的情況下,我希望所有的字母都是相反的)在Java中反轉字符,同時保持一定的位置
2
A
回答
4
您可以爲它創建一個自動機:
遍歷字符串,將每個字母插入到堆棧中,並替換爲不在原始字符串中的特殊字符(即$),根本不要更改數字。
再次迭代字符串,將每個$替換爲堆棧的頭部。
注:由於字符串是不可變的,你需要首先將其導出到一個StringBuilder或CharSequence的
編輯
例如:
String inp = "a45string1test";
char[] cs = new char[inp.length()];
inp.getChars(0, inp.length(), cs, 0);
Stack<Character> stack = new Stack<Character>();
for (int i =0;i<cs.length;i++) {
if (Character.isDigit(cs[i])) continue;
stack.push(cs[i]);
cs[i] = '$';
}
for (int i=0;i<cs.length;i++) {
if (cs[i] == '$') cs[i] = stack.pop();
}
System.out.println(cs);
結果將是t45setgni1rtsa
複雜度爲O(n):迭代字符串(兩次) - 因爲所有堆棧操作都是O(1)。
4
這聽起來像你想像myReverse(「a1b2c3d」)是「d1c2b3a」。
使用兩個索引,一個從字符串的每一端開始尋找可交換字符。
下面是一些僞代碼:
i1 = 0; i2 = len - 1;
while (i1 < i2) {
while (isCharacterThatShouldNotBeSwapped(str.charAt(i1)) && i1 < i2)
i1++;
while (isCharacterThatShouldNotBeSwapped(str.charAt(i2)) && i1 < i2)
i2--;
if (i1 < i2)
swapChars(str, i1, i2); /* swap characters at positions i1 and i2 in str */
i1++; i2--;
}
相關問題
- 1. 字符串反轉:反轉字的唯一位置字符串在C#
- 2. 反轉C中字符串的位置
- 3. 在同一位置上保持行
- 4. Python:兩個字符串同時保持位置的字符組合
- 5. 保持文字相同的位置
- 6. 在保持中心點在同一位置的同時縮放ImageView的圖像
- 7. java字符串處理字符串替換在同一位置
- 8. 如何在保持其位置的同時在pygame中旋轉圖像?
- 9. 如何將文字保持在同一位置?
- 10. 想要保持在相同的位置
- 11. 提交表格時請保持在同一位置
- 12. 在調整大小的同時保持div中心位置
- 13. 如何使UIPopoverController在旋轉後保持相同的位置?
- 14. 如何在調整父級NSView的同時將CALayer保持在同一位置?
- 15. java字符在一個字符串中的位置
- 16. 應用位置:固定在一個div,同時保持自動寬度
- 17. 在Java中反轉字符串中的單詞(NOT字符)
- 18. 在Java中的字符串中的特定位置添加特定字符
- 19. Android Java:在保持質量的同時縮小位圖嗎?
- 20. 從字符串中確定確定位置中的數字 - Java
- 21. 反轉java中的字符串
- 22. UITextView保持旋轉的文本位置
- 23. 保持精度,同時將字符串轉換爲十進制
- 24. 更改網頁位置,同時保持一些項目靜態?
- 25. 在保持列表垂直定位的同時保持列表內嵌文本
- 26. 如何在java中反轉字符串的字符?
- 27. 在保持滾動位置的同時更新RecyclerView
- 28. 過濾空格到字符串末尾的空格,同時在同一位置保留特殊字符
- 29. Java在字符串的特定位置替換字符?
- 30. 將標題保持在固定位置時居中問題
不能扭轉角色 - 可以扭轉一個字符串。給出一個樣本輸入/輸出。 – Erik 2011-04-17 08:35:18
@Erik,'b'倒過來就是'd'。 – 2011-04-17 08:59:28
@Erik,是的,你是對的。我的意思是像下面... – yydl 2011-04-17 09:05:11