又是一天String
(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的更多相关文章
- String引发的提问,我差点跪了
面试官:下面代码执行结果是什么?String t0 = "helloworld";String t1 = new String("helloworld");Sy ...
- 每天一道Java题[4]
问题 怎么将字符串转换为int? 解答 此题看似简单,但经常出现在笔试等地方,由于大家习惯了用IDE,有什么还真未必能写出来.通常都是parseInt()方法进行转换,如下: Int n = Inte ...
- JSONObject获取的值有时候不是String类型,而有时候又是String类型,怎么办呐
{ "weatherinfo": { "city": "深圳", "cityid": "101280601&q ...
- String类
字符串的功能 A:判断功能 boolean equals(Object obj)//比较对象 boolean eq ...
- 萌新笔记——封装hiredis——C++与redis对接(一)(string的SET与GET操作)
在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接.于是查询了一些资料,最后找到了hiredis.然而直接用它的话,难免有点不方便.于是,对其进行封装. hiredis直接去g ...
- 用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题
Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使 ...
- Java提高篇——理解String 及 String.intern() 在实际中的应用
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...
- String使用机制及string.equals()和==的区别(转)
http://904582819.blog.163.com/blog/static/11159282020127794456840/ equals方法和==的区别 首先大家知道,String既可以 ...
- 探秘Java中的String、StringBuilder以及StringBuffer
探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...
随机推荐
- C#功能杂集
使用unsafe代码 Unsafe, fixed, stackalloc 由于C#可以使用元数据,验证函数签名.对象类型,保证执行过程的安全,如果要使用指针,则不能进行验证,用unsafe表示.uns ...
- HBase读延迟的12种优化套路
任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...
- ubuntu下编译protobuf
参考: http://blog.csdn.net/wuzuyu365/article/details/51900676 1.下载protobuf下载地址:https://github.com/goog ...
- 反转链表,时间复杂度O(n),空间复杂度O(1)
原理:使用三个指针,p,q指向交换的元素,r指向后续元素 代码如下: class Node{ int data; Node next; Node(int data){ this.data=data; ...
- 德国GFZ
关于GFZ的介绍,图片中有,这里不赘述. 在下面的图片中介绍的,除了能够提供免费的数据支持外,就属左边的应用框架. 1.目前开源框架里,空间数据库多是postgis,根据数据量和组织方式,可以选择mo ...
- vim学习
vim编辑器的工作模式分为3种 1.Command Mode 命令模式 2.Insert Mode 插入模式 3.Lastline Mode 底行模式 vim 打开文件时处于命令模式,i 可以切换到插 ...
- I prefer fcitx
sudo add-apt-repository ppa:fcitx-team/nightly sudo apt-get update Then, you should install Fcitx.Fc ...
- Struts2:国际化
链接:[Java:国际化] src下有国际化资源文件:lan.propertieslan_zh_CN.properties 中文系统系统默认使用zh_CN文件,没有的话使用基本文件lan.proper ...
- os.path 大全
os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回一个路径的最后一个组成部分 os.path.commonprefix(list) #返回 ...
- ios 设置声音和震动,单独控制
一.今天项目中涉及了设置这快的声音震动和响铃,搞的头大,以前搞过,只是简单的调用系统的方法就可以实现,但是现在的公司要求,震动是震动,响铃是响铃,我看了微信,微信也是的分开的,做的很好,但是我就纳闷了 ...