题目一 翻转单词顺序

题意

输入一个英文句子,翻转句子中的单词的顺序,但单词内自负的顺序不变。标点符号和普通字母一样处理。

例:

输入:"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-翻转字符串的更多相关文章

  1. 剑指offer——66翻转字符串

    题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...

  2. 剑指 Offer 58 - I. 翻转单词顺序 + 双指针

    剑指 Offer 58 - I. 翻转单词顺序 Offer_58_1 题目描述 方法一:使用Split函数 package com.walegarrett.offer; /** * @Author W ...

  3. 力扣 - 剑指 Offer 58 - I. 翻转单词顺序

    题目 剑指 Offer 58 - I. 翻转单词顺序 思路1 假如题目要求我们翻转字符串,那么我们可以从末尾往前开始遍历每一个字符,同时将每一个字符添加到临时空间,最后输出临时空间的数据就完成翻转了, ...

  4. 剑指 Offer 58 - II. 左旋转字符串 + 简单题

    剑指 Offer 58 - II. 左旋转字符串 Offer_58_2 题目描述 java代码 package com.walegarrett.offer; /** * @Author WaleGar ...

  5. 【剑指Offer】翻转单词顺序列 解题报告(Python)

    [剑指Offer]翻转单词顺序列 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...

  6. 剑指 Offer 67. 把字符串转换成整数 + 字符串

    剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

  7. 力扣 - 剑指 Offer 67. 把字符串转换成整数

    题目 剑指 Offer 67. 把字符串转换成整数 思路1 根据题意,要解决这题,首先要判断的条件有: 不包括首位空格 第一位必须为:+.-.数字三者其一,否则不合法 数字必须连续的,如果遇到非数字, ...

  8. 【Java】 剑指offer(58-1) 翻转单词顺序

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变 ...

  9. 【剑指offer】翻转单词顺序

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/27372033 题目描写叙述: JOBDU近期来了一个新员工Fish,每天早晨总是会拿着一本 ...

  10. 【剑指offer】替换字符串中的空格

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25002199 剑指offer上的第四道题目,在九度OJ上測试通过,但还是有些问题.由于是用 ...

随机推荐

  1. Centos下lnmp正确iptables配置规则

    查看iptable运行状态 service iptables status 清除已有规则 iptables -Fiptables -Xiptables -Z 开放端口 #允许本地回环接口(即运行本机访 ...

  2. fb 4.7英文版 修改字体大小

    windows-preferences-general-appearance-colors and fonts-basic-text font

  3. ABAP-串口通信-道闸设备

    最近SAP系统需要与道闸设备集成,通过串口通讯模式控制道闸栏杆升降,在此将开发过程中的思路及问题点做个备注. 一.相关设备 道闸设备型号:富士智能FJC-D618 串口模块:康耐德 C2000-A1- ...

  4. Servlet基本_サーブレットのライフサイクル、スレッドセーフ

    1.サーブレットのライフサイクル初期化時 ⇒ init() [初回リクエスト時] ↓リクエスト時 ⇒service() ⇒doGet() [Httpリクエストメソッドにより振り分け] 或は⇒doPos ...

  5. C语言复习:内存模型1

    数据类型本质分析 数据类型概念 "类型"是对数据的抽象; 类型相同的数据有相同的表现形式/存储格式以及相关的操作; 程序中使用的所有数据都必定属于某一种数据类型; 数据类型本质思考 ...

  6. linux 3.10的list_del

    最近看到一个page的数据比较奇怪: crash> page ffffea002c239c58 struct page { flags = , _count = { counter = 34-- ...

  7. 记一个pg连接数过多的异常

    java中使用数据库连接池,如果在部署的时候,操作不慎,可能出现典型的连接池爆满的问题 org.postgresql.util.PSQLException: FATAL: sorry, too man ...

  8. Nodejs 第一站

    Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js 是一个事件驱动I/O服务端JavaSc ...

  9. SQL--结构化的查询语言

    SQL--结构化的查询语言T-SQL:Transact-SQL (SQL的增强版) 逻辑运算符 and && or || not ! 关系运算符 等于 = 不等于<>或!= ...

  10. python os模块的使用(转)

    os模块包含普遍的操作系统功能. 注意:函数参数path是文件或目录的路径,filename是文件的路径,dirname是目录的路径,路径可以是相对路径,也可绝对路径 常见或重要的函数为加粗字体 os ...