(1) Length of Last Word

解题思路:使用length记录最后一个单词的长度。从最后一个字符开始,如果是空字符,length不变。如果不是空字符,length++,直到再次遇到空字符就结束,返回length。

代码一如下:

 public class Solution {
public int lengthOfLastWord(String s) {
int length = 0;
char[] chars = s.toCharArray();
for (int i = s.length() - 1; i >= 0; i--) {
if (length == 0) {
if (s.charAt(i) == ' ') {
continue;
} else {
length++;
}
} else {
if (s.charAt(i) == ' ') {
break;
} else {
length++;
}
}
}
return length;
}
}

代码二如下:

 public int lengthOfLastWord(String s) {
return s.trim().length()-s.trim().lastIndexOf(" ")-1;
}

注意:s.trim()返回调用字符串对象的一个副本,所有起始和结尾的空格都被删除。

(2)Valid Parentheses

解题思路:使用后进先出的堆栈stack。如果遇到左半部分的括号全部进栈(push),遇到右半部分的括号匹配出栈(pop)。如果栈为空证明完全匹配。

代码如下:

 public class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{')
stack.push(s.charAt(i));
// Check stack for corresponding closing parentheses, false if not valid
else if(s.charAt(i) == ')' && !stack.isEmpty() && stack.peek() == '(')
stack.pop();
else if(s.charAt(i) == ']' && !stack.isEmpty() && stack.peek() == '[')
stack.pop();
else if(s.charAt(i) == '}' && !stack.isEmpty() && stack.peek() == '{')
stack.pop();
else
return false;
}
return stack.isEmpty();
}
}

(3)Longest Common Prefix

解题思路:题目大意是找出字符串数组中所有字符串的公共前缀。首先将第一个字符串设为前缀,然后使用indexof判断它是否是第二个字符串的前缀,如果是就继续判断第三个,如果不是就截取prexie的长度减一,还不是继续截取,直到是为止。

代码如下:

 public class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0)
return "";
String prefix = strs[0];
for (int i = 1; i < strs.length; i++) {
while (strs[i].indexOf(prefix) != 0) { //prefix不是strs[i]的前缀
prefix = prefix.substring(0,prefix.length()-1);//截取prefix
}
}
return prefix;
}
}

注意:

int indexOf(int ch,int fromIndex)函数:就是字符ch在字串fromindex位后出现的第一个位置.没有找到返加-1

eg:String str="a2dfcfar1bzvb";

System.out.println(str.indexOf(97,2));

看这个例子,输出:6

a的ASCII为97,就从d开始找a找到了输出a所在字符串的确切位置,找不到就输出-1!(java中位置第一个从0开始)

String.indexOf函数用法小结

1. indexOf的参数是String, startIndex: Number;

indexOf的返回值为int,

2. Function indexOf 包含如下几个格式:

1). Strng.indexOf(substring) //搜索String中的substring,默认从0位开始;

2). String.indexOf(substring, int m) //搜索String中的substring, 默认从第m位开始;

又是一天String的更多相关文章

  1. String引发的提问,我差点跪了

    面试官:下面代码执行结果是什么?String t0 = "helloworld";String t1 = new String("helloworld");Sy ...

  2. 每天一道Java题[4]

    问题 怎么将字符串转换为int? 解答 此题看似简单,但经常出现在笔试等地方,由于大家习惯了用IDE,有什么还真未必能写出来.通常都是parseInt()方法进行转换,如下: Int n = Inte ...

  3. JSONObject获取的值有时候不是String类型,而有时候又是String类型,怎么办呐

    { "weatherinfo": { "city": "深圳", "cityid": "101280601&q ...

  4. String类

    字符串的功能          A:判断功能                  boolean equals(Object obj)//比较对象                  boolean eq ...

  5. 萌新笔记——封装hiredis——C++与redis对接(一)(string的SET与GET操作)

    在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接.于是查询了一些资料,最后找到了hiredis.然而直接用它的话,难免有点不方便.于是,对其进行封装. hiredis直接去g ...

  6. 用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题

    Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使 ...

  7. Java提高篇——理解String 及 String.intern() 在实际中的应用

    1. 首先String不属于8种基本数据类型,String是一个对象.   因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...

  8. String使用机制及string.equals()和==的区别(转)

    http://904582819.blog.163.com/blog/static/11159282020127794456840/ equals方法和==的区别   首先大家知道,String既可以 ...

  9. 探秘Java中的String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...

随机推荐

  1. C#功能杂集

    使用unsafe代码 Unsafe, fixed, stackalloc 由于C#可以使用元数据,验证函数签名.对象类型,保证执行过程的安全,如果要使用指针,则不能进行验证,用unsafe表示.uns ...

  2. Entity Framework 学习笔记

    1.自定义数据库链接字符串上下文 public class PetDbContext : DbContext { public PetDbContext() : base("name=Dem ...

  3. disposition

    该文为堕落的天使不再来原创.欢迎转载. 在尽心web开发时,可能遇到以下几种需求:(disposition配置) 希望某类或者某已知MIME 类型的文件(比如:*.gif;*.txt;*.htm)能够 ...

  4. openlayers

    很久没有写东西了,最近突然想看看地图,就翻看了下,用了2-3周时间看看网页,学习做了下:先看做的效果:

  5. Ubuntu 14.04下Django+MySQL安装部署全过程

    一.简要步骤.(Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便一些有需要的童鞋,大神勿喷~ 二.Python的安装 由于博主使用的环境是 ...

  6. .net framework 3.5sp1 安装不成功

    主要还是进程中有程序和正在安装的 framework 3.5sp1有冲突.打开任务管理器,关闭所有360进程和与Framework有关的进程.竟然安装成功了,折腾了3.4天的问题,就这么解决了.

  7. sencha touch打包成安装程序

    为了更好地向大家演示如何打包一个sencha touch的项目,我们用sencha cmd创建一个演示项目,如果你的sencha cmd环境还没有配置,请参照 sencha touch 入门系列 (二 ...

  8. Unsupported major.minor version 52.0

    jdk版本错误,默认应该选择高版本的,请检查你的配置文件引用 java.exe的路径,把它改为绝对路径 分析:其他软件如oracle安装可能会自带一些低版本的jdk,然后你项目引用如果 path=ja ...

  9. MonkeyRunner测试一MonkeyRunner的使用

    最近搭建MonkeyRunner开发环境,安装PyDev时,饱受折磨,现在终于搞定.因为一些原因,用了JDK1.6,在线安装插件PyDev成功后,Windows-Preferences里找不到PyDe ...

  10. 再谈vertical-align与line-height

    每次遇到多个inline-block元素排列的怪异垂直位置的问题的时候都可以通过经验,设置vertical-align来解决,没深入研究过,现在需要分析总结下这个问题. 问题引出 有小鲜肉新做了个页面 ...