在java中如何實現字元串的反轉

来源:https://www.cnblogs.com/coderwsp/archive/2019/04/21/10746844.html
-Advertisement-
Play Games

如 "abcdt" 反轉之後是 "tdcba" 思路1: 運用遞歸的方法進行反轉 假設反轉方法為 reverseString(String str)1)當字元串為空或者只有一個字元時,返回原字元2)當字元串有兩個以上(長度為len)的字元時,反轉後的字元串為 第二個字元開始的子串的反轉結果+第一個字 ...


 

如 "abcdt" 反轉之後是 "tdcba"

思路1: 運用遞歸的方法進行反轉

假設反轉方法為 reverseString(String str)
1)當字元串為空或者只有一個字元時,返回原字元
2)當字元串有兩個以上(長度為len)的字元時,反轉後的字元串為 第二個字元開始的子串的反轉結果+第一個字元, 即 reverseString(str.subString(1))+str.charAt(0);

代碼實現如下:

    public String reverseStringRecur(String str) {
        if ((str == null) || str.length() <2) return str;
        return  reverseString(str.subString(1))+str.charAt(0);

     }

思路2: 非遞歸的方法
當字元串長度大於1時,把第一個字元和最後一個字元交換,把第二個字元和倒數第二個字元交換
需要設置兩個標識符:begin, end。begin指向第一個字元,end指向最後一個字元
當begin<end, 交換第begin個字元和第end個元素的字元, 然後begin向後移動,end向前移動

代碼實現如下:

public static String reverseString(String str) {
    if ((str == null) || str.length() <2) return str;
    char cArray[] = str.toCharArray();
    int begin = 0;
    int end = cArray.length-1;
    while(begin<end){
        char temp=cArray[begin];
        cArray[begin] = cArray[end];
        cArray[end] = temp;
        begin ++;
        end --;
    }
return new String(cArray);
}


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • #!usr/bin/env python # -*- coding: utf-8 -*- # Author:Sun Xiaolin import sys judgement = sys.argv[1] #[]內寫的值表示取第幾個 # print(judgement) if judgement == ... ...
  • C語言的課後習題 求數列:2/1,3/2,5/3,8/5,13/8,21/13,...前50項的和 數列規律: 第二項的分母是【前一項分子】 第二項的分子是【前一項分子與分母的和】 ...
  • numpy 與 matplotlib 的應用 一、庫函數介紹 1. numpy庫 NumPy(Numeric Python)提供了一個N維的數組類型ndarray,Numpy底層使用C語言編寫,內部解除了GIL(全局解釋器鎖),其對數組的操作速度不受Python解釋器的限制,效率遠高於純Python ...
  • @[toc] 實戰內容 海倫女士一直使用線上約會網站尋找適合自己的約會對象。儘管約會網站會推薦不同的人選,但她並不是喜歡每一個人。經過一番總結,她發現自己交往過的人可以進行如下分類: 不喜歡的人 魅力一般的人 極具魅力的人 海倫收集約會數據已經有了一段時間,她把這些數據存放在文本文件datingTe ...
  • ArrayBlockingQueue的實現方式? ArrayBlockingQueue是否需要擴容? ArrayBlockingQueue有什麼缺點? ...
  • 如果你發現所有的功能都報找不到映射的錯,有可能是因為mapper文件沒有被編譯 在eclipse中,把資源文件放在src下,是可以被編譯的 但是在idea中,直接把資源文件放在src下,如果不進行設置,是不會被編譯的,idea對src下的xml等資源文件是預設不編譯的 ​ 在pom.xml中加入以下 ...
  • 1. 游戲功能和流程圖 實現功能:翻開兩個一樣的牌子就顯示,全部翻開游戲結束,設置5種圖形,7種顏色,游戲開始提示隨機8個牌子 游戲流程圖 2. 游戲配置 配置游戲目錄 配置游戲(game_conf.py) 配置顏色(color.py) 配置形狀(shape.py) 3. 游戲使用工具函數(view ...
  • 1.當前路徑及路徑下的文件 os.getcwd():查看當前所在路徑。 os.listdir(path):列舉目錄下的所有文件。返回的是列表類型。 2.os.path.splitext(path) 分離文件名與擴展名;預設返回(fname,fextension)元組,可做分片操作 >>> os.pa ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...