• String Two


    (1) Length of Last Word

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

    代码一如下:

     1 public class Solution {
     2     public int lengthOfLastWord(String s) {
     3         int length = 0;
     4         char[] chars = s.toCharArray();
     5         for (int i = s.length() - 1; i >= 0; i--) {
     6             if (length == 0) {
     7                 if (s.charAt(i) == ' ') {
     8                     continue;
     9                 } else {
    10                     length++;
    11                 }
    12             } else {
    13                 if (s.charAt(i) == ' ') {
    14                     break;
    15                 } else {
    16                     length++;
    17                 }
    18             }
    19         }
    20         return length;
    21     }
    22 }
    View Code

    代码二如下:

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

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

    (2)Valid Parentheses

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

    代码如下:

     1 public class Solution {
     2     public boolean isValid(String s) {
     3         Stack<Character> stack = new Stack<Character>();
     4         for (int i = 0; i < s.length(); i++) {
     5             if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{')
     6                 stack.push(s.charAt(i));
     7             // Check stack for corresponding closing parentheses, false if not valid
     8             else if(s.charAt(i) == ')' && !stack.isEmpty() && stack.peek() == '(')
     9                 stack.pop();
    10             else if(s.charAt(i) == ']' && !stack.isEmpty() && stack.peek() == '[')
    11                 stack.pop();
    12             else if(s.charAt(i) == '}' && !stack.isEmpty() && stack.peek() == '{')
    13                 stack.pop();
    14             else
    15                 return false;
    16         }
    17         return stack.isEmpty();
    18     }
    19 }
    View Code

    (3)Longest Common Prefix

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

    代码如下:

     1 public class Solution {
     2     public String longestCommonPrefix(String[] strs) {
     3         if (strs.length == 0)  
     4             return "";  
     5         String prefix = strs[0];  
     6         for (int i = 1; i < strs.length; i++) {  
     7             while (strs[i].indexOf(prefix) != 0) {  //prefix不是strs[i]的前缀
     8                 prefix = prefix.substring(0,prefix.length()-1);//截取prefix
     9             }  
    10         }  
    11         return prefix;   
    12     }
    13 }
    View Code

    注意:

    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位开始;

  • 相关阅读:
    gifplayer-可控制GIF动画图片播放和暂停jQuery插件
    ERROR 2003 (HY000): Can't connect to MySQL server on
    linux下重启nginx
    查看MySQL的当前存储引擎
    MySQL查看表占用空间大小
    使用Sequel Pro通过ssh远程连接MySQL出错:The SSH Tunnel has unexpectedly closed
    textview 内容从头开始显示
    SQL优化
    运营平台框架整理(内部用)
    线程的取消和关闭
  • 原文地址:https://www.cnblogs.com/struggleli/p/6224818.html
Copyright © 2020-2023  润新知