1. 程式人生 > >演算法學習(java實現之字串)·····旋轉字串

演算法學習(java實現之字串)·····旋轉字串

給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉)

樣例

給出字串"abcdefg"

如果偏移量offset=0,返回"abcdefg"

如果偏移量offset=1,返回"gabcdef"

如果偏移量offset=2,返回"fgabcde"

如果偏移量offset=3,返回"efgabcd"

public class Solution {
    /*
     * param A: A string
     * param offset: Rotate string with offset.
     * return: Rotated string.
     */
    public char[] rotateString(char[] A, int offset) {
        // wirte your code here
        //當偏移量為0或者字元陣列為空時直接返回原字元陣列
        if(offset==0||A.length==0){
            return A;
        }
        //當字元陣列的長度小於偏移量時,先對其取餘
        if(offset>A.length){
            offset =offset%A.length;
        }
        //將字串分為兩部分,將第一部分翻轉
        for(int i = 0,j=A.length-1-offset;i<j;i++,j--){
            char temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
        //將第二部分翻轉
        for(int i= A.length-offset,j=A.length-1;i<j;i++,j--){
             char temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
        //再將整個字串翻轉
        for(int i =0,j=A.length-1;i<j;i++,j--){
            char temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
        return A;
    }
    
};


相關推薦

演算法學習java實現字串·····旋轉字串

給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 樣例 給出字串"abcdefg" 如果偏移量offset=0,返回"abcdefg" 如果偏移量offset=1,返回"gabcdef" 如果偏移量offset=2,返回"fgabcde" 如果偏移量offse

這可能是最透徹的氣泡排序演算法解析java實現

氣泡排序是一種思想簡單,便於理解和實現的排序演算法,也許是很多人學習的第一個排序演算法,廢話不多說,我們來實現它 演算法詳解 我們以升序排列為例,演算法的思想是,遍歷整個陣列,依次對陣列中的每兩個數進行比較大小,通過兩個數字的交換,達到將最大的元素移動到陣列的最

常用排序演算法總結Java實現

排序演算法比較: 1. 氣泡排序 /** * 氣泡排序 * 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 * 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。 * 針對所有的元素重複以上的步驟,除了最後一個

資料結構與演算法練習Java實現

package lintcode; /**  *  * @ClassName: Solution  * @Description: TODO()  * @author A18ccms a18ccms_gmail_com  * @date 2017年8月14日 上午10:12

八種排序演算法總結Java實現

        排序演算法有很多,在特定情景中使用哪一種演算法很重要。本文對幾種常見排序演算法做了簡單的總結。 一、氣泡排序         氣泡排序(BubbleSort)是一種簡單的排序演算法。它重複地走訪要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交

圖解氣泡排序及演算法優化Java實現

# 冒牌排序 ## 基本思想 **定義**:氣泡排序的英文是bubblesort,它是一種基礎的交換排序 **原理**:每次比較兩個相鄰的元素,將較大的元素交換至右端 (升序排序) **思路**:相鄰的元素兩兩比較,當一個元素大於右側相鄰元素時,交換它們的位置;當一個元素小於或等於右側相鄰元素時,位置

圖解選擇排序及演算法優化Java實現

# 選擇排序 ## 前言 **原理:**每次迴圈對比找出最小/大值,將最值的元素交換至左側 **思想:**直接選擇排序(Straight Select Sort)演算法思想:第一趟從n個元素的資料序列中選出關鍵字最小/大的元素並放在最前/後位置,下一趟從n-1個元素中選出最小/大的元素並放在最前/後位置

倒排索引構建演算法SPIMI實現,修訂版

TA011121600045170###347###A0###2###20111214213127###86b4bc20eb98b1eb21932ebf5dcfcca5###1###蘭州###空氣質量# TA011121600045168###347###A0###2###20111215181000###e

超詳細的java基礎知識學習java SE、javaEE筆記 核心重點!

識別符號 Java 的識別符號是由字母、數字、下劃線_、以及美元符$組成,但是首字母不可以是數字。Java 識別符號大小寫敏感,長度無限制,不能是 Java 中的關鍵字。命名規則:要見名知意! u  變數要首字母小寫和駝峰原則; u  常量的單詞字母要全部大寫,

劍指offer程式設計題JAVA實現)——第27題:字串的排列

github https://github.com/JasonZhangCauc/JZOffer import java.util.ArrayList; import java.util.Collect

JAVA實現Python requests模組JAVA實現Http請求

具體的使用方法,請檢視專案地址中Usage。 2.一個簡單的HTTP請求的例子,傳送請求和讀取響應字串: Map<String, Object> headers = new Hash

單鏈表反轉Java實現遞迴

要求很簡單,輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。使用遞迴實現 package com.lyh.seckill.test; public class ReLinkedList { private static class Node{ pri

從零開始學習演算法Java實現~~~~字串篇~~~判斷兩個字串是否是顛倒字母順序構成的

從今天開始記錄一下學習演算法的例程,貴在堅持! 寫出一個函式 anagram(s, t) 去判斷兩個字串是否是顛倒字母順序構成的 樣例    給出 s="abcd",t="dcab",返回 true 難都係數* 以下是java程式碼實現: public class So

基礎算法系列排序演算法-7.希爾排序 並解決hdu 1425問題java實現

       我們從最初的氣泡排序演算法,到上篇文章的折半插入排序演算法,我們一共學習了5種排序演算法,相信以大家的聰明才智肯定都消化了^_^。在本篇文章中,我們又將學習第6種排序演算法——希爾排序演算法。那就讓我們直奔主題吧。 希爾排序  讓我們回想一下直接插入排序演算

演算法】給定兩個字串,確定一個字串重新排列後能否變成另一個字串java實現

分析:兩個字串的長度都不相同時,不可能是變位詞 package com.billkang.algorithm; import java.util.Arrays; /** * 給定兩個字串,確

劍指offer字串轉換成整數Java實現

將字串轉換成整數 NowCoder 題目描述: 將一個字串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是一個合法的數值則返回0。 輸入描述: 輸入一個

Louvain 社團發現演算法學習我的java實現+資料用例

為了大家方便,直接把資料放在github了:演算法介紹:Louvain 演算法是基於模組度的社群發現演算法,該演算法在效率和效果上都表現較好,並且能夠發現層次性的社群結構,其優化目標是最大化整個社群網路的模組度。社群網路的模組度(Modularity)是評估一個社群網路劃分好

字串字串平移java實現

    對於一個字串,請設計一個演算法,將字串的長度為len的字首平移到字串的最後。給定一個字串A和它的長度,同時給定len,請返回平移後的字串。 測試樣例: "ABCDE",5,3 解析:解題思路比較簡單,假設字串長度為n,則首先分別逆序0-(len-1)和len-(n-

排序演算法——計數排序Java實現

        今天,我來講一講計數排序。計數排序與堆排序快速排序等排序不同,它是一種非比較排序,已經有人證明過,比較排序的時間下界是Ω(nlogn),但這個性質是不適用於計數排序的,因為它不是比較排序。他的時間是線性的。        計數排序假設n個輸入,每個都是介於0