[剑指Offer]58-翻转字符串
题目一 翻转单词顺序
题意
输入一个英文句子,翻转句子中的单词的顺序,但单词内自负的顺序不变。标点符号和普通字母一样处理。
例:
输入:"I am a student."
输出:“student. a am I”
思路
reverse实现翻转,则第一步翻转整个句子,第二步翻转每个单词。
代码
#include <iostream>
using namespace std;
void reverse(char* beg,char* end){
if(beg==nullptr||end==nullptr){
return;
}
while(beg<end){
char temp=*beg;
*beg=*end;
*end=temp;
++beg;
--end;
}
}
char* reverseSentence(char* s){
char* beg=s;
char* end=s;
while(*end!='\0'){
++end;
}
reverse(beg, end-1);
end=s;
while(*end!='\0'){
if(*beg==' '){
++beg;
++end;
}
else if(*end==' '||*end=='\0'){
reverse(beg, end-1);
beg=++end;
}
else{
++end;
}
}
return s;
}
int main(int argc, const char * argv[]) {
char s[]="I am a student.";
// char s[]=" ";
reverseSentence(s);
cout<<s<<endl;
return 0;
}
题目二 左旋转字符串
题意
把字符串前面的若干个(n)字符转移到字符串的尾部。
例:
输入:"coolday"和n=4
输出:“daycool”
思路
reverse实现翻转,第一步翻转整个句子,第二步翻转后n个字符组成的字符串,第三步翻转前面部分的字符串。
注意输入在合法范围,以及不用处理的情况。
其他
1 字符串处理:注意 一:输入空指针nullptr的特殊处理;二:避免内存访问越界问题。
2 关于strlen()和sizeof()
对char* s[]="sunny";
strlen(s)==5
sizeof(s)/sizeof(char)==6
代码
#include <iostream>
#include <string>
using namespace std;
void reverse(char* beg,char* end){
if(beg==nullptr||end==nullptr){
return;
}
while(beg<end){
char temp=*beg;
*beg=*end;
*end=temp;
++beg;
--end;
}
}
void leftRotate(char* s,int rotateLen){
size_t len=strlen(s);
if(s!=nullptr&&rotateLen>0&&rotateLen<len){//输入合法;当rotateLen=len时不用处理
char* beg=s;
char* end=s+len-1;
reverse(beg, end);
beg=end-rotateLen+1;
reverse(beg,end);
end=beg-1;
beg=s;
reverse(beg,end);
}
}
int main(){
char s[]="coolday";
int rotateLen=4;
// char s[]="c";
// int rotateLen=1;
leftRotate(s,rotateLen);
cout<<s<<endl;
return 0;
}
[剑指Offer]58-翻转字符串的更多相关文章
- 剑指offer——66翻转字符串
题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...
- 剑指 Offer 58 - I. 翻转单词顺序 + 双指针
剑指 Offer 58 - I. 翻转单词顺序 Offer_58_1 题目描述 方法一:使用Split函数 package com.walegarrett.offer; /** * @Author W ...
- 力扣 - 剑指 Offer 58 - I. 翻转单词顺序
题目 剑指 Offer 58 - I. 翻转单词顺序 思路1 假如题目要求我们翻转字符串,那么我们可以从末尾往前开始遍历每一个字符,同时将每一个字符添加到临时空间,最后输出临时空间的数据就完成翻转了, ...
- 剑指 Offer 58 - II. 左旋转字符串 + 简单题
剑指 Offer 58 - II. 左旋转字符串 Offer_58_2 题目描述 java代码 package com.walegarrett.offer; /** * @Author WaleGar ...
- 【剑指Offer】翻转单词顺序列 解题报告(Python)
[剑指Offer]翻转单词顺序列 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 剑指 Offer 67. 把字符串转换成整数 + 字符串
剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...
- 力扣 - 剑指 Offer 67. 把字符串转换成整数
题目 剑指 Offer 67. 把字符串转换成整数 思路1 根据题意,要解决这题,首先要判断的条件有: 不包括首位空格 第一位必须为:+.-.数字三者其一,否则不合法 数字必须连续的,如果遇到非数字, ...
- 【Java】 剑指offer(58-1) 翻转单词顺序
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变 ...
- 【剑指offer】翻转单词顺序
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27372033 题目描写叙述: JOBDU近期来了一个新员工Fish,每天早晨总是会拿着一本 ...
- 【剑指offer】替换字符串中的空格
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25002199 剑指offer上的第四道题目,在九度OJ上測试通过,但还是有些问题.由于是用 ...
随机推荐
- 机器学习进阶-边缘检测-Canny边缘检测 1.cv2.Canny(进行Canny边缘检测)
1. cv2.Canny(src, thresh1, thresh2) 进行canny边缘检测 参数说明: src表示输入的图片, thresh1表示最小阈值,thresh2表示最大阈值,用于进一步删 ...
- WDA-4-ALV按钮&ICON
1.ICON图标 AccessControlledArea (14x14) Activate (14x14) Active (14x14) AdaptationTechnical (14x14) Ad ...
- 1.13.Mark1
[经济学人]双语阅读:律师事务所 标价更高 收益更少 Business 商业报道 Law firms 律师事务所 Charging more, getting less 标价更高,收益更少 L ...
- js 改变颜色值
/** * 获取颜色值 */ const color2RGB = (color) => { if (typeof color !== 'string' || (color.length !== ...
- KVM虚拟化技术(一)虚拟化简介
一 .虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个 ...
- subline 相关
ctrl + ` 输入命令: import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.insta ...
- python 拷贝 深拷贝 浅拷贝 赋值
t = [1,["a","b"]] t_bak = t t_cop = copy.copy(t) t_deep = copy.deepcopy(t) print ...
- Javascript中call、apply之我见
一.call和apply定义. 1.Call 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 参数 thisObj 可选项.将被用作当前对象的对象. arg ...
- import模块
一.在import模块的时候发生的事情 1.寻找模块2.如果找到了,就开辟一块空间,执行这个模块3.把这个模块中用到的名字都录到新开辟的空间中4.创建一个变量来引用这个模块中 二.注意事项: *1.模 ...
- 嵌入式 Web Server 温度检测系统
1. Web Server 服务器后台表单处理程序:使用 CGI 程序接口编写后台程序的 Web 服务器. 2. Boa 服务器