1 .1 字符串的旋转
题目描述:
给定一个字符串,要求将字符串前面的若干个字符串移到字符串的尾部。例如,将字符串“abcdef”的前三个字符‘a’、‘b’,‘c’移到字符串的尾部,那么原字符串将变成“defabc”。请写一个函数实现此功能。
解法一:蛮力移位,需要移动字符一个一个的移动到字符串的尾部。

void leftShiftOne(char* s, int n)
{char t = s[0];for(int i=1; i<n; i++){s[i-1]=s[i];}s[n-1]=t;
}
char Roatechar(char *s, int n, int m)
{while(m--){leftShiftOne(s,n);}
}

解法二:三步反转
主要思想就是借助旋转函数,以及局部旋转和整体旋转的巧妙应用,达到最后的整体的字符串的旋转的结果。
第一步:由于m=3,可将原来的字符串分成两个部分,即“abc”和“def”。
第二步:局部旋转,即将“abc”变成“cba”和“def”变成“fed”,故整个字符串将变成为“cbafed”。
第三步:整体旋转,即“cbafed”变成“defabc”.
关键二等一步就是定义一个旋转函数,即镜面旋转,180度旋转。投叫互换的思想。

旋转函数的定义如下:

char rotateChar( char *s, int from, int to)
{while(from<to){char t=s[from];s[from++]=s[to];s[to--]=t;}
}

故主函数:

char ShiftM(char *s, int n, int m)
{m %= n;//若要左移大于n为,那么与%n是等价的。rotateChar(s, 0, m-1);rotateChar(s, m, n-1);rotateChar(s, 0, n-1);
}

举一反三:单词翻转
题目描述:输入一个英文句子,翻转句子中单词的顺序。要求单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,输入:“I am a student.”,则输出“student. a am I”。
主要思想:
第一步就是整体翻转,即“I am a student.”变成“.tneduts a ma I”。
第二步就是局部翻转,即".tneduts"变成“student.”, “ma”变成“am”。
关键在于找空格符时,起始符和停止符两个的定位。

 class Solution {
public:string ReverseSentence(string str) {int len = str.length();if(len == 0) return "";int begin=0;int end=0;Reverse(str,0,len-1);begin=end=0;while(str[begin]!='\0'){if(str[begin]==' '){begin++;end++;}else if(str[end]==' '||str[end]=='\0'){Reverse(str,begin,--end);begin=++end;}else end++;}return str;}void Reverse(string &str,int begin,int end){while(begin < end){swap(str[begin++],str[end--]);}}
};

1.2字符串的包含
题目描述:
给定一个长字符串a和一短字符串b。请问, 如何最快的判断出短字符串b中的所有字符是否都在长字符串a中?请编写函数bool StringContain( string &a, string &b)实现此功能。
为简单起见,假设输入的字符串只包含大写英文字母。下面举几个例子。
假设a为“ABCD”,b的情况如下:
1“BAD”,真
2“BCE”,假
3“AA”,真

举一反三
变位词
题目描述:如果两个字符串的字符一样,出现次数也一样,只是出现的顺序不一样,则认为这两个字符串是兄弟字符串。例如,“bad”和”abd”即为兄弟字符串。现在提供一个字符串,请问如何在字典中迅速找到它的兄弟字符串?

1.1 字符串的旋转+1.2 字符串的包含相关推荐

  1. C语言---写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串

    题目: 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串. #include <string.h> #include <stdio.h> void left_re ...

  2. 判断一个字符串是另外字符串的旋转字符串

    题目 假设你有一个isSubstring函数,可以检测一个字符串是否是另一个字符串的子串. 给出字符串s1和s2,只使用一次isSubstring就能判断s2是否是s1的旋转字符串, 请写出代码.旋转 ...

  3. 两种方法判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言)...

    例如:给定s1 = AABCD和s2 = BCDAA,返回1 给定s1 = abcd和s2 = ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 第一种: ...

  4. 判断一个字符串是否为另外一个字符串旋转之后的字符串。

    ★判断一个字符串是否为另外一个字符串旋转之后的字符串. 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0. AABCD左旋一个字符得到ABCDA ...

  5. 数据结构与算法--3.字符串的旋转

    题目: A是含有n个元素的数组,如果可以申请到最大内存,那么把A从位置i开始旋转是比较简单的.例如:A:a,b,c,d,e.其中i=3,旋转后的字符串A为:d,e,a,b,c 要求设计一个时间复杂度为 ...

  6. LeetCode/LintCode 题解丨一周爆刷字符串:旋转字符数组

    描述 给定一个字符数组 s 和一个偏移量,根据偏移量原地旋转字符数组(从左向右旋转). offset >= 0 s 的长度 >= 0 原地旋转意味着需要在函数中更改字符数组 s.你不需要返 ...

  7. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串

    剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...

  8. Suzy找到实习了吗Day 8 | 字符串开始啦 344. 反转字符串,541. 反转字符串 II,剑指 Offer 05. 替换空格,151. 反转字符串中的单词,左旋转字符串

    这里是目录 344. 反转字符串 题目 Solution 541. 反转字符串 II 题目 Solution(v1) Solution(v2) 剑指 Offer 05. 替换空格 做题记录 151. ...

  9. 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

    题目: 判断一个字符串是否为另外一个字符串旋转之后的字符串.  例如:给定s1 =AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0. AABCD左旋一个字符得到AB ...

最新文章

  1. python fun
  2. 想学python有什么用-python学来有什么用
  3. 高标准,严要求!数据中心发电机组的调试与验收工作
  4. 程序员的十层楼(第11层)
  5. python核心,内建函数,高阶函数
  6. linux内核系列远程拒绝服务漏洞,预警 | Linux 爆“SACK Panic”远程DoS漏洞,大量主机受影响...
  7. [转载] Python列表拷贝复制函数copy()函数的作用
  8. 网络传输中利用fastjson将复杂嵌套数据类型Json格式转换(GeoJsonPolygon)
  9. 091 类的多态和多态性
  10. Noip2008提高组初赛 C
  11. java home_JAVA_HOME配置
  12. RS485芯片介绍及典型应用电路
  13. java word文件转图片
  14. 角色权限管理系统(角色功能授权)
  15. widows安装wxPython
  16. 大括号内打两行公式,还附带标号或条件
  17. 各国iPhone5系列最新裸机价格
  18. 移动硬盘误删分区,数据完美找回
  19. 装完黑苹果怎么装windows_黑苹果安装教程,小编教你黑苹果怎么安装
  20. Failed to start component异常的解决方案

热门文章

  1. 如何使用spy ++ (How to use Spy ++)
  2. Socket api接口--Send(),Recv()的长度问题
  3. C语言指针(1)嵌入式linux
  4. 评分9.3,你想要的那本书,来了!
  5. 面试常见的C语言字符串操作
  6. 记一次解决问题的掉坑过程
  7. 周五跟大佬喝酒,顺便打了个球
  8. mkimage command not found
  9. linux python 信号,Python模块之信号(signal)
  10. vue里实现同步执行方法_vue中的watch方法 实时同步存储数据