演算法學習(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