1. 程式人生 > >字串之字串平移(java實現)

字串之字串平移(java實現)

    對於一個字串,請設計一個演算法,將字串的長度為len的字首平移到字串的最後。給定一個字串A和它的長度,同時給定len,請返回平移後的字串。

測試樣例:

"ABCDE",5,3

解析:解題思路比較簡單,假設字串長度為n,則首先分別逆序0-(len-1)和len-(n-1)的子串,然後見整個字串再次逆序,即可得到結果。

演算法實現:(以下程式碼本人親自測試無誤)

import java.util.*;
public class Translation {
    public String stringTranslation(String A, int n, int len) {
        // write code here
        char[] c = A.toCharArray();
       reverse(c,0,len-1);
        reverse(c,len,n-1);
        reverse(c,0,n-1);
        

        return String.valueOf(c);
        
    }
     public void reverse(char[] c,int left,int right){
       
        while(left<right){
            swap(c,left,right);
            left++;
            right--;
        }
        
    }
    public void swap(char[] c,int a,int b){
     char t = c[a];
        c[a] = c[b];
        c[b] = t; 
    }
}

相關推薦

字串字串平移java實現

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

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

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

排序算法入門快速排序java實現

大小 ava 相對 其余 時間 個數 技術分享 算法 元素交換   快速排序也是一種分治的排序算法。快速排序和歸並排序是互補的:歸並排序將數組分成兩個子數組分別排序,並將有序的子數組歸並以將整個數組排序,會需要一個額外的數組;而快速排序的排序方式是當兩個子數組都有序

設計模式代理模式java實現

代理模式(Proxy):結構型的設計模式,目的是為其他物件提供一種代理以控制對這個物件的訪問。 即,它的思想是控制類或者介面對外的功能。 代理模式分為靜態代理模式和動態代理模式兩種。 在Spring中代理模式常見的是在AOP模組中,比如 JdkDynamicAopProxy

設計模式委派模式java實現

委派模式(delegate):並不屬於23種設計模式,但是面向物件常用的一種設計模式,而且在SpringMVC原始碼中有大量使用。這種模式原理就是類 B和類 A 是兩個互相沒有任何關係的類,B 具有和 A 一模一樣的方法和屬性;並且呼叫

設計模式原型模式java實現

原型模式(Prototype Pattern):就是從一個物件再建立另一個可定製物件的,而且不需要知道任何建立的細節。所謂原型模式,就是 Java 中的克隆技術,以某個物件為原型。複製出新的物件。顯然新的物件具備原 型物件的特點,效率高(避免了重新執行構造過程步驟)。 所以當直接建立物件代價

劍指offer跳臺階Java實現

跳臺階 NowCoder 題目描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 ###解題思路: 對於第n個臺階來說,只能從n-1或者n-2的臺階跳上來,所以 F(n) = F(n-1) +

劍指offer矩形覆蓋Java實現

矩形覆蓋 NowCoder 題目描述: 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? ###解題思路: 2*n的大矩形,和n個2*1的小矩形 其中target*2為大矩陣的大小

設計模式模板模式java實現

模板模式(Template):行為型模式的一種,定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。Template Method 使得子類可以不改變 一個演算法的結構即可重定義該演算法的某些特定步驟。 簡單的理解就是,一個架構或者業務的主體邏輯和流程是確定的,那麼我們可以將它

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

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

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

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

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

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

LeetCode 541. 反轉字串java實現

給定一個字串和一個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。 示例: 輸入: s = "abcdef

找出兩個字串中最大的公共子串java實現

import java.util.HashSet; import java.util.Set; public class Test { public static void main(String[] args) { String

LeetCode 345. 反轉字串中的母音字母java 實現

編寫一個函式,以字串作為輸入,反轉該字串中的母音字母。 示例 1: 輸入: "hello" 輸出: "holle" 示例 2: 輸入: "leetcode" 輸出: "leotcede" 說明: 母音字母不包含字母"y"。 //雙指標 class Solution

在一個字串中找到第一個只出現一次的字元java實現

題目:在一個字串中找到第一個只出現一次的字元。如輸入abaccdeff,則輸出b。 分析:這道題是2006 年google 的一道筆試題。 時間換空間,類似前面時間CSDN討論的一道華為的面試題:在O(n)時間內,得出一個字串每一個字元出現的次數類似; 用到這道題

排序算法入門希爾排序java實現

入門 介紹 插入 一次 變化 shells ngx i++ ava 希爾排序是對插入排序的改進。插入排序是前面元素已經有序了,移動元素是一個一個一次往後移動,當插入的元素比前面排好序的所有元素都小時,則需要將前面所有元素都往後移動。希爾排序有了自己的增量,可以理

面試題:編寫一個函式來查詢字串陣列中的最長公共字首。 如果不存在公共字首,返回空字串 ""。c++實現

例項說明 示例 1: 輸入: ["flower","flow","flight"] 輸出: "fl" 示例 2: 輸入: ["dog","racecar","car"] 輸出: "" 解釋: 輸入不存在公共字首。 說明: 所有輸入只包含小寫字母 a-z&

LeetCode題目--字串轉整數 (atoi)python實現

題目 實現 atoi,將字串轉為整數。 該函式首先根據需要丟棄任意多的空格字元,直到找到第一個非空格字元為止。如果第一個非空字元是正號或負號,選取該符號,並將其與後面儘可能多的連續的數字組合起來,這部分字元即為整數的值。如果第一個非空字元是數字,則直接將其與之後連續的數字字元組

動態規劃完全揹包問題java實現

之前寫了01揹包問題,現在寫完全揹包問題。和01揹包不同的是,完全揹包不限定某種物品的件數,可以裝0,1,2,...,而01揹包只有裝與不裝的區別。但是思考問題的方式還是一樣的,我就其中的最大值。詳細程式碼和註釋見下面程式碼。 package backpack; /* f[i][v]:前i件物