激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - Java教程 - java實(shí)現(xiàn)左旋轉(zhuǎn)字符串

java實(shí)現(xiàn)左旋轉(zhuǎn)字符串

2021-07-18 15:35雨幕下的稻田 Java教程

這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)左旋轉(zhuǎn)字符串,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

匯編語言中有一種移位指令叫做循環(huán)左移(rol),現(xiàn)在有個(gè)簡(jiǎn)單的任務(wù),就是用字符串模擬這個(gè)指令的運(yùn)算結(jié)果。對(duì)于一個(gè)給定的字符序列s,請(qǐng)你把其循環(huán)左移k位后的序列輸出。例如,字符序列s=”abcxyzdef”,要求輸出循環(huán)左移3位后的結(jié)果,即“xyzdefabc”。是不是很簡(jiǎn)單?ok,搞定它!

代碼

解法一

最直觀的方式,依次將需要移位的字符移動(dòng)至最后,但是每個(gè)字符都需要移動(dòng)數(shù)組的長(zhǎng)度-1,如果數(shù)組的長(zhǎng)度是n,需要移k位,則總共需要移動(dòng) k * (n - 1)

java" id="highlighter_623926">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static string leftrotatestring(string str, int n) {
    if (strings.isnullorempty(str)) {
      return str;
    }
    if (n < 0 || n >= str.length()) {
      return str;
    }
    char[] strarray = str.tochararray();
    while (n-- > 0){
      // 直接交換的方式,將需要移位的部分通過交換n-1次向左移動(dòng)
      // 比如abcde,要移動(dòng)2位,即cdead
      // 1. 將a移動(dòng)至最后,此時(shí)是bcdea
      // 2. 將b移動(dòng)至最后,此時(shí)是cdeab
      for (int i = 0; i < strarray.length - 1; i++) {
        swap(strarray, i, i + 1);
      }
    }
    return new string(strarray);
  }
 
  private static void swap(char[] str, int i, int j) {
    char temp = str[i];
    str[i] = str[j];
    str[j] = temp;
  }

解法二

借助字符串的反轉(zhuǎn),比如“ab”對(duì)應(yīng)“ba”,“xyz”對(duì)應(yīng)“zyx”,總共需要三步即可得到期望想過

  • 反轉(zhuǎn)要移位的部分,”abcxyzdef”操作后是”cbaxyzdef”
  • 反轉(zhuǎn)其余的部分,”cbaxyzdef”操作后是”cbafedzyx”
  • 反轉(zhuǎn)整個(gè)字符串,”cbafedzyx”操作后是”xyzdefabc”
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public static string leftrotatestring2(string str, int n) {
    if (strings.isnullorempty(str)) {
      return str;
    }
    if (n < 0 || n >= str.length()) {
      return str;
    }
    char[] strarray = str.tochararray();
    // 借助反轉(zhuǎn),分三步
    // 1. 反轉(zhuǎn)要移位的部分
    // 2. 反轉(zhuǎn)其余部分
    // 3. 整體反轉(zhuǎn)
    reverse(strarray, 0, n - 1);
    reverse(strarray, n, strarray.length - 1);
    reverse(strarray, 0, strarray.length - 1);
    return new string(strarray);
  }
 
  /**
   * 反轉(zhuǎn)字符串,兩端依次進(jìn)行交換即完成反轉(zhuǎn)
   * @param str
   * @param start
   * @param end
   */
  private static void reverse(char[] str, int start, int end) {
    while (start < end) {
      swap(str, start, end);
      start++;
      end--;
    }
  }
 
  private static void swap(char[] str, int i, int j) {
    char temp = str[i];
    str[i] = str[j];
    str[j] = temp;
  }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/zl18310999566/article/details/80250653

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 高清国产在线 | 涩涩伊人| 美女喷水网站 | 日韩视频区 | 午夜在线成人 | 看91视频 | 妇子乱av一区二区三区 | 成人毛片久久 | 在线成人免费网站 | 欧美精品一区二区三区久久久 | 红杏亚洲影院一区二区三区 | 一本色道久久综合亚洲精品小说 | 国产精品亚洲一区二区三区在线观看 | 欧美成人小视频 | 天堂亚洲一区 | 国产一区二区三区色淫影院 | av国产在线被下药迷网站 | 日本va在线观看 | 一边吃奶一边摸下娇喘 | 久久精品国产99久久6动漫亮点 | 久久在线精品视频 | 精品一区二区中文字幕 | 国产69精品久久99不卡免费版 | 久久网国产 | 在线亚洲综合 | 国内毛片视频 | 国产精品99精品 | 永久免费av片在线观看全网站 | 国产一级做a爰片在线看 | 国产毛片在线看 | 久久久久久久黄色片 | 久久草在线视频国产 | 国产在线播放91 | 日本一道aⅴ不卡免费播放 日日草夜夜操 | 正在播放91视频 | 日本久久网站 | 欧美成在线视频 | 国产免费高清 | 蜜桃成品人免费视频 | 久久电影一区二区 | 日日草夜夜|