leetcode58. Length of Last Word

xiaoxiao2021-02-28  103

58. Length of Last Word

Given a string s consists of upper/lower-case alphabets and empty space characters ’ ‘, return the length of last word in the string.

If the last word does not exist, return 0.

Note: A word is defined as a character sequence consists of non-space characters only.

For example, Given s = "Hello World", return 5.

解法一

先对字符串去除无用空格,然后倒序输出第一个空格之前的词。

public class Solution { public int lengthOfLastWord(String s) { if (s == null || s.length() == 0) { return 0; } char[] arr = s.toCharArray(); int len = arr.length; String clean = clean(arr, len); char[] cleanArr = clean.toCharArray(); if (cleanArr == null || cleanArr.length == 0) { return 0; } int cleanLen = cleanArr.length; int j = 0; for (int i = cleanLen - 1; i >= 0; i--) { if (cleanArr[i] != ' ') { j++; } else { break; } } return j; } public String clean(char[] arr, int len) { int i = 0, j = 0; while (j < len) { while (j < len && arr[j] == ' ') { j++; } while (j < len && arr[j] != ' ') { arr[i++] = arr[j++]; } while (j < len && arr[j] == ' ') { j++; } if (j < len) { arr[i++] = ' '; } } String s = new String(arr).substring(0, i); return s; } }

解法二

只针对最后一个词,最后一个词之后的空格过滤掉

public class Solution { public int lengthOfLastWord(String s) { if (s == null || s.length() == 0) { return 0; } char[] arr = s.toCharArray(); int len = arr.length; int j = 0; for (int i = len - 1; i >= 0; i--) { while (i >= 0 && arr[i] == ' ') { i--; } while (i >=0 && arr[i] != ' ') { j++; i--; } break; } return j; } }
转载请注明原文地址: https://www.6miu.com/read-40686.html

最新回复(0)