
问题
给定一个仅包含大小写字母和空格 ‘ ‘ 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
输入: “Hello World”
输出: 5
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.
Input: “Hello World”
Output: 5
示例
public class Program { public static void Main(string[] args) { var s = "world"; var res = LengthOfLastWord(s); Console.WriteLine(res); s = "hello csharp"; res = LengthOfLastWord2(s); Console.WriteLine(res); s = "a "; res = LengthOfLastWord3(s); Console.WriteLine(res); Console.ReadKey(); } private static int LengthOfLastWord(string s) { s = s.Trim(); if(s.Length == 0) return 0; for(var i = s.Length - 1; i >= 0; i--) { if(s[i] == ' ') return s.Length - i - 1; } return s.Length; } private static int LengthOfLastWord2(string s) { s = s.Trim(); var split = s.Split(' '); if(split.Length == 0) return 0; return split[split.Length - 1].Length; } private static int LengthOfLastWord3(string s) { s = s.Trim(); return s.Length - s.LastIndexOf(' ') - 1; } }
以上给出3种算法实现,以下是这个案例的输出结果:
5 6 1
分析:
应当认为以上3种算法的时间复杂度均为: ,而不是
,因为用到了部分运行库,而它们的时间复杂度都是线性的。
本文由 .Net中文网 原创发布,欢迎大家踊跃转载。
转载请注明本文地址:https://www.byteflying.com/archives/3927。