(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. CSS盒子模型与box-sizing

    今天在学习的时候偶然看到一张图片: 我瞬间瞪大了眼睛:width和height竟然不包括padding和border!! 过去所学知识有问题!在我的印象里,width应该是包含padding和bord ...

  2. Ubuntu14.04安装搜狗拼音输入法

    删除ibus输入法 sudo apt-get purge ibus sudo apt-get autoremove 安装fcitx和拼音输入法 sudo apt-get install fcitx f ...

  3. js疑问

    var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];var aCopy = arr.slice();aCopy; // ['A', 'B', 'C', 'D', ...

  4. UEFI+GPT引导实践篇(二):UEFI引导安装64位Win7/Win8

    下文是在联想Y480笔记本上以UEFI方式启动安装Windows8的全过程,安装Windows7过程基本相同.注意,如果你的电脑硬盘是MBR分区结构,安装过程中将要删除硬盘上所有数据,请安装前备份硬盘 ...

  5. 2.3 ARM寄存器详解

    一共有37个寄存器 1. 31个通用寄存器 2. 6个状态寄存器 R13作为堆栈指针 R14链接寄存器 1.保存函数返回地址 2. 异常返回地址 R15程序计数器(PC指针) 程序状态寄存器 只有在异 ...

  6. jquery append 方法应用

    <!DOCTYPE html><html><head><meta charset="utf-8"><title>< ...

  7. Linux常见疑难问答

    Linux常见疑难问答 (1)按a~z顺序排列启动服务进程. #exportLC_ALL=C           #英文环境变量设置,主要用于解决乱码问题 #chkconfig –list | gre ...

  8. iOS富文本

    背景:前些天突然想做一个笔记本功能,一开始,觉得挺简单的呀,一个UITextView,网络缓存也不干了,直接本地NSUserDefault存储,然后完事了,美工,弄几张好看的图片,加几个动画,也就这样 ...

  9. cacti应用

    cacti被很多IDC/CDN提供商用来进行带宽计算使用:带宽的95计费(95th Percentile charging) 95计费法是CDN常用计费方法: CDN基本上是每月结一次款.每5分钟取一 ...

  10. nginx相关的一些记录

    http redirect to https: if ($http_cf_visitor ~ '"scheme":"http"'){ rewrite ^/(.* ...