剑指offer 43.左旋转字符串

43.左旋转字符串

题目描述

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

思路一:

修正 n 的值后,让一个StingBuilder对象先后拼接 str 字符串中 n 之后的字符和 0 ~ n 之间的字符

 1 public class Solution {
 2     public String LeftRotateString(String str,int n) {
 3         if(str == null || str.length() == 0){
 4             return str;
 5         }
 6         // 修正 n 的值
 7         n %= str.length();
 8         // 将 0 - n - 1 为移到 n 为后面
 9         StringBuilder sb = new StringBuilder();
10         sb.append(str.substring(n, str.length()));
11         sb.append(str.substring(0, n));
12         return sb.toString();
13     }
14 }

思路二:

修正 n 的值之后,让 str 再加上 一个str, 之后返回新 str 的 (n ~ len + n)之间的字符串

 1 public class Solution {
 2     public String LeftRotateString(String str,int n) {
 3         if(str == null || str.length() == 0){
 4             return str;
 5         }
 6         // 修正 n 的值
 7         n %= str.length();
 8         int len = str.length();
 9         str += str;
10         return str.substring(n, len + n);
11     }
12 }

原文地址:https://www.cnblogs.com/hi3254014978/p/12628447.html

时间: 2024-10-05 18:50:08

剑指offer 43.左旋转字符串的相关文章

【剑指offer】左旋转字符串

转载请注明出处:http://blog.csdn.net/ns_code/article/details/27366485 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S="abcXYZdef",要求输出循环左移3位后的结果,即"XYZdefabc".是不是很简单?OK,搞定它! 输入: 多组测试数据,每个测试数据包含一个

【剑指offer】左旋转字符串,C+实现

原创博文,转载请注明出处! 本题牛客网地址 本题代码的github地址 本系列文章的索引地址 # 题目 # 思路 先局部翻转,后整体翻转.举例:abcdefg先局部翻转为bagfedc,后整体翻转为cdefgab. # 代码 #include <iostream> #include <string> using namespace std; class Solution { public: string LeftRotateString(string &str, int n

剑指offer:左旋转字符串

剑指offer (43) n个骰子的点数

题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率 int g_maxValue = 6; // ====================方法一==================== void Probability(int number, int* pProbabilities); void Probability(int original, int current, int sum, int* pProbabilities); void Pr

170319 剑指offer 1.把一个字符串转化成整数(简单问题的全面性考虑)

工作的时间越长,越感觉基础的重要性,当我们对程序的框架结构越来越熟悉的时候,越会注意这一点,在工作当中,功能的实现是重要的,但是代码的健壮性,重用性,与扩展性确往往更为重要,在学习新技术的同时,我们或许应该抽出一点时间,去思考代码可能出现的问题. 关于剑指offer的这本书,可能所有刚毕业找工作的人,或者准备找工作的人都曾经看过,但是当时我们面对一些东西的时候心情过于浮躁,往往忽视了简单的却又十分重要的环节,(ps:也可能只有我是这样) 面试中一道简单的问题(把一个字符串转化成整数) 可能接触c

剑指offer(27)字符串的排列

题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母. 题目分析 这题还算可以,关于全排列,有两种解法,第一种就是递归全排列法,第二种就是回溯法. 递归全排列法: 就是剑指offer上的做法,也比较容易理解,不过挺少人答的也就是 把字符串分为两部分:第一部分为第一个字符,第二部分为第一个

剑指Offer对答如流系列 - 翻转字符串

面试题58:翻转字符串 问题描述 问题(1) 翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理. 例如输入字符串"I am a student. ",则输出"student. a am I". 问题(2)左旋转字符串 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能. 比如输入字符串"abcdefg"和数字2,该函数将返回左

43左旋转字符串+三步反转法

题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S="abcXYZdef",要求输出循环左移3位后的结果,即"XYZdefabc".是不是很简单?OK,搞定它! 思路:所有的反转题目尤其是字符串,都记得使用三步反转法.旋转类问题,比如字符串反转. 使用三步反转法: 1)使用O(n)的时间,直接遍历找到反转的中间元素: 2)将中间

剑指offer之【把字符串转换成整数】

题目: 把字符串转换成整数 链接: https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&tqId=11202&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0