Given a string s, reverse the string according to the following rules:
  • All the characters that are not English letters remain in the same position.
  • All the English letters (lowercase or uppercase) should be reversed.
class Solution {
public:
string reverseOnlyLetters(string s) {
//用栈或者双指针即可
//two-pointer
int n=s.size();
int left=0,right=n-1;
while(left<right)
{
//这样写是错误的:~((s[left]>='A'&&s[left]<='Z')||(s[left]>='a'&&s[left]<='z') 按位取反以及逻辑取非不一样
//写法和快排思路相似
while(left<right && !((s[left]>='A'&&s[left]<='Z')||(s[left]>='a'&&s[left]<='z')))
{
//cout<<~((s[left]>='A'&&s[left]<='Z')||(s[left]>='a'&&s[left]<='z'))<<endl;
left++;
}
cout<<left<<endl;
while(left<right && !((s[right]>='A'&&s[right]<='Z')||(s[right]>='a'&&s[right]<='z')))
{
right--;
}
//cout<<left<<"-"<<right<<endl;
if(left<right)
{
//cout<<left<<"-"<<right<<endl;
char tmp=s[left];
s[left]=s[right];
s[right]=tmp;
left++;
right--;
}
}
return s;
}
};

最新文章

  1. poj 1328 Radar Installation
  2. 开园第一篇 - 论移动开发环境 IOS与Android的差异
  3. 【视频教程】使用UIAutomation开发软件外挂
  4. Java中的匿名类
  5. 1、shell 简介
  6. Qt String 与char* char int之间的转换
  7. 应用层open(read、write、close)怎样调用驱动open(read、write、close)函数的?
  8. [Leetcode]-ReverseLinkedList
  9. Android 使用AsyncTask 下载图片的例子,学会使用AsyncTask
  10. IDEA配置Struts框架
  11. Redis基础一(Linux)
  12. hibernate核心类及常用方法
  13. 12生成器,send,推导式
  14. bind,apply,call,caller,callee还傻傻分不清楚?
  15. 【核心】project(idea文件)、module(iml文件)到SSM集成、热部署、Tomcat启动、MAVEN依赖冲突
  16. Django中的缓存基础知识
  17. 【转】ArcGIS10.0完全卸载全攻略
  18. 挂载文件系统出现&quot;kernel panic...&quot; 史上最全解决方案
  19. 关于Test类中不能使用Autowired注入bean的问题
  20. npm使用过程中出现的错误

热门文章

  1. java中Map及Map.Entry详解
  2. 负载均衡算法WRR介绍
  3. Go defer 原理和源码剖析
  4. Effective C++ 总结笔记(四)
  5. liunx基础知识点1:系统管理相关命令、目录操作命令、文本编辑、关闭防火墙、重启和关闭
  6. 【linux系统】jmeter安装
  7. [bzoj3038]上帝造题的7分钟2
  8. [atAGC001F]Wide Swap
  9. [loj2473]秘密袭击
  10. 下一代的 3D Tiles 前瞻