zoukankan      html  css  js  c++  java
  • 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位开始;

  • 相关阅读:
    Python logging模块异步线程写日志实现过程解析
    Python数据分析实战项目介绍
    Pytorch 卷积中的 Input Shape用法
    Python 找出出现次数超过数组长度一半的元素实例
    Linux系统如何安装Python?新手教程
    MySQL 日志 复制数据库 InnoDB表空间模式 mysql默认数据库
    MySQL 8.0 窗口函数 排名、topN问题
    MySQL 求中位数 两个案例
    MySQL 创建表 复制表结构的两种方法 插入相同数据 重命名表 排查并修改字符集
    mysql if 和 case
  • 原文地址:https://www.cnblogs.com/struggleli/p/6224818.html
Copyright © 2011-2022 走看看