557. Reverse Words in a String III
来源:互联网 发布:ubuntu怎么注销用户 编辑:程序博客网 时间:2024/05/24 03:27
Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.
Example 1:
Input: "Let's take LeetCode contest"Output: "s'teL ekat edoCteeL tsetnoc"
Note: In the string, each word is separated by single space and there will not be any extra space in the string.
这是一道考交换字符的题目,代码很简单。
void reverse(int a,int b,char* s){ while(a<b){ s[a]=s[a]^s[b]; s[b]=s[a]^s[b]; s[a]=s[a]^s[b]; a++;b--; }}char* reverseWords(char* s) { int i,len=strlen(s),index=0; for(i=0;i<=len;i++){ if(s[i]==' '||s[i]=='\0'){ reverse(index,i-1,s); index = i+1; } } return s;}问题在于用三次异或交换两个字符是不是合适。
这绝对是个骚操作,一眼看过去非常牛逼。
第一次异或得到a和b的差异值,第二次异或把b还原成a,第三次把a还原成b。
比如a=3=0011
b=5=0101
a=a^b=0110
b=a^b=0011=3
是不是很神奇,然而如果a=b,那么三次异或后a,b都会变成0。
而且按照陈硕老师的博客,这种骚操作除了显示你位运算学得好以外没什么用处。
http://blog.csdn.net/solstice/article/details/5166912
所以还是乖乖的用中间变量交换吧。。。
阅读全文
0 0
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 557. Reverse Words in a String III
- 快速排序partition过程常见的两种写法
- Ubuntu16.04配置使用deepnlp
- CMake入门教程
- 关系运算符及循环,逻辑运算符
- python 常用库
- 557. Reverse Words in a String III
- gis地图图层(前台)
- jQuery 事件方法
- win7系统安装网银助手时提示您尚未正确安装错误的两种解决方法图文教程
- TCP-IP 第四版 第一章 引言
- oracle 下载
- LeetCode题解(Week 13):128. Longest Consecutive Sequence
- JAVA中常用的4种线程池的使用
- 【java基础】JDBC实现增删改查