344. Reverse String

解法一(暴力法):

直接从两头往中间走,同时交换两边的字符即可

首位对调位置。

class Solution {
public void reverseString(char[] s) {
int tail = s.length-1;
for(int i = 0; i < s.length/2; i++){
char temp = s[i];
s[i] = s[tail-i];
s[tail-i] = temp;
}
}
}

解法二:

利用swap函数求解

class Solution {
public void reverseString(char[] s) {
// if(s == null || s.length == 0)
// return ""; int left = 0, right = s.length-1;
while(left < right){
char temp = s[left];
s[left++] = s[right];
s[right--] = temp;
}
}
}

151. Reverse Words in a String

1.反转全部字符数组

2.反转每个单词

3.清楚多余空格

class Solution {
public String reverseWords(String s) {
int n = s.length();
if (n == 0)
return ""; char[] a = s.toCharArray();
//1. reverse string
reverse(a, 0, n - 1);
//2. reverse words
reverseWord(a, n);
//3. clean up spaces
return cleanSpaces(a,n);
}
public String cleanSpaces(char[] a, int n){
int i = 0, j = 0;
while(j < n){
while(j < n && a[j] == ' ') j++;
while(j < n && a[j] != ' ') a[i++] = a[j++]; //keep non-spaces
while(j < n && a[j] == ' ') j++;
if(j < n) a[i++] = ' '; //keep only one space
}
return new String(a).substring(0, i);
} void reverseWord(char[] a, int n){
int i = 0, j = 0;
while(i < n){
while(i < j || i < n && a[i] == ' ') i++; //skip spaces
while(j < i || j < n && a[j] != ' ') j++; //skip non-spaces
reverse(a, i, j -1);
}
} private void reverse(char[] a, int i, int j){
while(i < j){
char temp = a[i];
a[i++] = a[j];
a[j--] = temp;
}
}
}

1.String类中toCharArray()方法的用法

该方法的作用是返回一个字符数组,该字符数组中存放了当前字符串中的所有字符。将字符串转换为字符数组。

2. 数组有length属性,String有length()方法。

优先级&& 大于 ||

11/2 下午 <String>的更多相关文章

  1. .NET中国开发者峰会11.9 下午分会场1 内容解析

    China .NET Conf 2019中国 .NET 开发者峰会即将在上海召开,这次大会是一届完全由社区组织举办的中国.NET 开发者盛会,我们筹备大会之初就定下了大会的主题是“开源.共享.创新”. ...

  2. c++ 11字符串与string转换常用函数

    这里主要介绍一下string to int 其他方法与这个类似,可到头文件 <string> 中查看 @_Str 转换的字符串 @_Idx 转换的长度(位数) @_Base 进制 doub ...

  3. Java 11 - Java String类

    Java String类 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串. 创建字符串 创建字符串最简单的方式如下: String gree ...

  4. C++11中的raw string literals

    作为一名C++书看得少得可怜的新手,我一直没有勇气去系统地学习一下C++ 11添加的新特性.不过,平日里逛论坛,阅读大犇们的博客,倒是了解了一些.比如,这个帖子: 如何绕过g++ 4.8.1那个不能在 ...

  5. c++之常见数据类型(int,double,float,long double long long 与std::string之间)相互转换(含MFC的CString、含C++11新特性函数)

    --- 已经通过初步测试---- ------------------ 下面的是传统常见数据类型的转换(非c++11)---------------  std::string 与其他常用类型相互转换, ...

  6. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  7. LocalDate/LocalDateTime与String的互相转换示例(附DateTimeFormatter详解)

    摘自:https://www.jianshu.com/p/b7e72e585a37 LocalDate/LocalDateTime与String的互相转换示例(附DateTimeFormatter详解 ...

  8. 企业IT管理员IE11升级指南【6】—— Internet Explorer 11面向IT专业人员的常见问题

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  9. java String 详解

    1.java语言的字符串序列是通过字符串类实现的.java提供了3个字符串类:String类.StringBuilder类和StringBuffer类.String类是不变字符串,StringBuff ...

随机推荐

  1. webrtc笔记(5): 基于kurento media server的多人视频聊天示例

    这是kurento tutorial中的一个例子(groupCall),用于多人音视频通话,效果如下: 登录界面: 聊天界面: 运行方法: 1.本地用docker把kurento server跑起来 ...

  2. redis之HyperLogLog

    HyperLogLog 提供不精确的去重计数方案,虽然不精确但是也不是非常不精确,标准误差是 0.81%. 使用方法 HyperLogLog 提供了两个指令 pfadd 和 pfcount,根据字面意 ...

  3. C# WebAPI 文件在线预览

    最近在写一个移动端API接口,其中有一个需求:接口返回附件url地址让手机端调用实现文件在线预览.大体实现思路:把doc.xls等文本格式文件转换为pdf,转换后的pdf文件存放在服务器上面,方便第二 ...

  4. vue 脚手架搭建步骤!

    ========================================================== 说出来都是泪,最开始都不知道从哪里开始(回头一看还是很简单的,关键是要找到入口)  ...

  5. NBIOT实现UDP协议的发送和接收(包含软件升级)

    源码下载: nbiot_module程序(java netbean) -> 提取码 UdpServer程序(C# vs2010) -> 提取码 QQ:505645074 前提条件:开NB卡 ...

  6. [b0012] Hadoop 版hello word mapreduce wordcount 运行(二)

    目的: 学习Hadoop mapreduce 开发环境eclipse windows下的搭建 环境: Winows 7 64 eclipse 直接连接hadoop运行的环境已经搭建好,结果输出到ecl ...

  7. linux (07) redis详解

    一.redis持久化RDB 1.在配置文件中添加参数,开启rdb功能 redis.conf 写入 port 6379 daemonize yes logfile /data/6379/redis.lo ...

  8. re 模块详解

    1.re 模块 regex 1.查找 :findall 意思"匹配所有,每一项都是列表的组成元素" 有返回值 import re ret=re.findall("\d+& ...

  9. 跳表和ConcurrentSkipListMap解析

    二分查找和AVL树查找 二分查找要求元素可以随机访问,所以决定了需要把元素存储在连续内存.这样查找确实很快,但是插入和删除元素的时候,为了保证元素的有序性,就需要大量的移动元素了. 如果需要的是一个能 ...

  10. Celery详解(3)

    1.什么是Celery? Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列,同时也支持任务调度 2.Celery架构 Celery的架构由三部分组成,消息中 ...