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. bootstrap-editable 中关于onEditableSave 回调

    问题描述 在对bootstrap-editable 进行编辑时,有两种使用方法:一种直接在每一个column中进行编辑保存,例如:{ title:'标题', field:'title', width: ...

  2. LeetCode 160: 相交链表 Intersection of Two Linked Lists

    爱写Bug(ID:iCodeBugs) 编写一个程序,找到两个单链表相交的起始节点. Write a program to find the node at which the intersectio ...

  3. WPF 通过EventTrigger修改鼠标样式

    难倒是不难. 除去eventtrigger之外还有别的触发器可以实现. 这个主要是难在对xaml的数据理解上. 代码实现 <Button Content=" > <Butt ...

  4. GO学习笔记 - 模版渲染及多种输出

    本文主题:基于内置的text/template实现Golang模版渲染,并将结果写入文件.屏幕.变量. 小慢哥的原创文章,欢迎转载 目录 ▪ 定义结构体 ▪ 定义模版文本 ▪ 模版渲染及输出方式 ▪ ...

  5. Android App压力测试方法(Monkey)

    一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...

  6. 跨域问题 Blocked a frame with origin "http://......" from accessing a cross-origin frame.

    为了轻松偷懒,不想从目的项目中开发目标项目中的页面,但目的项目中需要获取老项目中的页面,这里用了iframe跨域链接页面出现了问题 Blocked a frame with origin " ...

  7. deepin可视化程序打不开问题排查方法

    anyconnect是一个VPN软件,在deepin系统下安装完成之后,并不能够直接使用,点击启动图标之后没有反应. 要想分析问题,必须从命令行入手,错误会打印在控制台. 如何根据一个图标来找到一个程 ...

  8. 前端vue项目js中怎么保证链式调用后台接口

    在一个for循环中对同一接口调用多次,如何保证逐步执行,同步执行. html部分 <DcFileUpload v-for="(item, index) of fileLengthLis ...

  9. 「白帽黑客成长记」Windows提权基本原理(上)

    我们通常认为配置得当的Windows是安全的,事实真的是这样吗?今天让我们跟随本文作者一起深入了解Windows操作系统的黑暗角落,看看是否能得到SYSTEM权限. 作者将使用不同版本的Windows ...

  10. Android 主题、样式

    样式是针对View的,比如TextView.Button等控件,主题是针对Activity.整个APP的. 样式.主题是多种属性的集合,类似于网页中的CSS样式,可以让设计与内容分离,并且可以继承.复 ...