国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java實現以字符串某一位置為界,將它之前的部分與之后的部分互換位置

2019-11-06 09:21:34
字體:
來源:轉載
供稿:網友

  最近在看面試題的時候發現,一些基礎的算法都記不住了,只是能大概說出個原理….為了加深記憶,這里對一些簡單的算法題進行一個歸納。

  下面的代碼主要解決的問題是:給定一個字符串str和一個整數i,i代表字符串中某一個元素的下標,將str[0..i-1]移到這個元素的右側,將str[i+1..len(str)-1]移到這個元素的左側。(要求:時間復雜度為O(N),空間復雜度為O(1))

測試用例樣例:   輸入:”abcde”, 2   預期結果: deabc

  下面是java實現:

/** * Created by Flynnon on 17-2-27. * 問題:給定一個字符串str和一個整數i,i代表字符串中某一個元素的下標,將str[0..i-1]移到這個元素的右側,將str[i+1..len(str)-1]移到這個元素的左側。 * 要求:時間復雜度為O(N),空間復雜度為O(1) */public class Test { /** * 將一個數組以某一元素分界,將這個元素之前的部分與之后的部分互換位置 * 主要思路: 將之前的部分與之后的部分分別逆序,再將整體逆序即可 * @param str 要進行操作的字符串 * @param i 作為分界線的元素的下標 * @return 轉化之后生成的字符串 */ public static String replaceBeginAndEnd(String str, int i) { if (str == null || i < 0 || str.length() <= i) { return str; } char[] chars = str.toCharArray(); reverseCharArray(chars, 0, i - 1); reverseCharArray(chars, i + 1, chars.length - 1); reverseCharArray(chars, 0, chars.length - 1); return new String(chars); } /** * 用來翻轉一個數組的某一部分 * @param charArray 要進行操作的數組 * @param begin 要翻轉的部分第一個元素的下標 * @param end 要翻轉的部分最后一個元素的下標 */ public static void reverseCharArray(char[] charArray, int begin, int end) { char tmp; while (begin < end) { tmp = charArray[begin]; charArray[begin] = charArray[end]; charArray[end] = tmp; begin++; end--; } } public static void main(String[] args) { String str = "abcde"; System.out.PRintln(replaceBeginAndEnd(str, 2)); }}

下面是測試用例及結果,與預期結果一致。

測試結果

由于本人水平有限,本文難免存在謬誤,歡迎批評指正!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇义县| 九龙城区| 三都| 当涂县| 全南县| 宜春市| 朔州市| 阿鲁科尔沁旗| 福海县| 建水县| 社旗县| 南郑县| 繁峙县| 天气| 湾仔区| 西贡区| 吉木乃县| 江安县| 砀山县| 葵青区| 淅川县| 临泽县| 拜泉县| 尼玛县| 乌兰浩特市| 甘洛县| 阿克| 昔阳县| 祁连县| 沁源县| 武川县| 靖安县| 教育| 西充县| 敦化市| 正蓝旗| 新密市| 潞西市| 吴川市| 东台市| 边坝县|