【LeetCode】434. Number of Segments in a String 解题报告(Python)
作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/
题目地址:https://leetcode.com/problems/number-of-segments-in-a-string/#/description
题目描述
Count the number of segments in a string, where a segment is defined to be a contiguous sequence of non-space characters.
Please note that the string does not contain any non-printable characters.
Example:
Input: "Hello, my name is John"
Output: 5
题目大意
字符串中有多少个不包含空字符的子字符串。
解题方法
统计
这个题方法应该自己使用过的,不过是倒着来。回想自己以前在每个单词后面输入一个空格,但是行尾不要空格的时候怎么做的?不就是判断第一个单词的前面不打空格,在之后的所有单词的前面打了一个空格。这个题的思路是不是倒着来?
判断某个单词的开始的字符前面是不是空格,如果是字符串的第一个字符也会把技术加1,这样就能统计出所有用空格分割的字符串段的个数。
public class Solution {
public int countSegments(String s) {
int count = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) != ' ' && (i == 0 || s.charAt(i - 1) == ' ')){
count++;
}
}
return count;
}
}
正则表达式
正则\s表示匹配空格,+表示匹配一次或者任意多次。所以有以下代码。
public int countSegments(String s) {
String trimmed = s.trim();
if (trimmed.length() == 0) return 0;
else return trimmed.split("\\s+").length;
}
python版本:
class Solution(object):
def countSegments(self, s):
"""
:type s: str
:rtype: int
"""
s = re.sub("\s+", " ", s)
s = s.strip()
if not s: return 0
return len(s.split(" "))
另外,如果\S就是匹配所有的非空字符,所以我们只要知道有多少个匹配就好了。
class Solution(object):
def countSegments(self, s):
"""
:type s: str
:rtype: int
"""
return len(re.findall("\S+", s))
字符串分割
python的split()函数,默认的参数就是按照连续空格进行分割。注意,千万不要写参数为" "。
class Solution(object):
def countSegments(self, s):
"""
:type s: str
:rtype: int
"""
return len(s.split())
日期
2017 年 5 月 5 日
2018 年 11 月 24 日 —— 周六快乐
【LeetCode】434. Number of Segments in a String 解题报告(Python)的更多相关文章
- LeetCode 806 Number of Lines To Write String 解题报告
题目要求 We are to write the letters of a given string S, from left to right into lines. Each line has m ...
- 434. Number of Segments in a String
原题: 434. Number of Segments in a String 解题: 刚看到题目时,觉得可以通过统计空格个数,但想想有可能会有多个空格的情况 思路: 一:遍历字符,if条件碰到非空格 ...
- 【LeetCode】833. Find And Replace in String 解题报告(Python)
[LeetCode]833. Find And Replace in String 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu ...
- 【LeetCode】434. Number of Segments in a String
Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...
- [LeetCode] 434. Number of Segments in a String_Easy
Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...
- 434. Number of Segments in a String 字符串中的单词个数
[抄题]: Count the number of segments in a string, where a segment is defined to be a contiguous sequen ...
- [LC] 434. Number of Segments in a String
Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...
- 434 Number of Segments in a String 字符串中的单词数
统计字符串中的单词个数,这里的单词指的是连续的非空字符.请注意,你可以假定字符串里不包括任何不可打印的字符.示例:输入: "Hello, my name is John"输出: 5 ...
- 【LeetCode】806. Number of Lines To Write String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 使用ASIIC码求长度 使用字典保存长度 日期 题目 ...
随机推荐
- grep -r
今晚改脚本 我发现了一个很有趣的事情,一共56个配置文件 1 # 注意:对一些参数一致的多个文件可以用此方法 2 # grep -r 查找文件内容,其中PARALLEL=2就是我要替换的内容 3 4 ...
- pyyaml模块
pyyaml模块是一种文件数据处理格式的方法,常用与生成.解析或修改.yaml配置文件 1.常见.yaml文件格式内容如下 languages: - Ruby - Perl - Python webs ...
- Shell中单引号和双引号的区别
1.创建一个test.sh文件 vim test.sh 在文件中添加如下内容 #!/bin/bash do_date=$1 echo "$do_date" echo '$do_da ...
- spring boot 之监听器ApplicationListener
监听器ApplicationListener 就是spring的监听器,能够用来监听事件,典型的观察者模式.ApplicationListener和ContextRefreshedEvent一般都是成 ...
- 几种常用JavaScript设计模式es6
设计模式分类(23种设计模式) 创建型 单例模式 原型模式 工厂模式 抽象工厂模式 建造者模式 结构型 适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式 行为型 观察者模式 迭 ...
- 【Spring Framework】Spring 入门教程(一)控制反转和依赖注入
参考资料 Spring 教程 说在前面 什么样的架构,我们认为是一个优秀的架构? 判断准则:可维护性好,可扩展性好,性能. 什么叫可扩展性好? 答:在不断添加新的代码的同时,可以不修改原有代码,即符合 ...
- Spring AOP通过注解的方式设置切面和切入点
切面相当于一个功能的某一个类,切入点是这个类的某部分和需要额外执行的其他代码块,这两者是多对多的关系,在代码块处指定执行的条件. Aspect1.java package com.yh.aop.sch ...
- 【C/C++】二维数组的传参的方法/二维字符数组的声明,使用,输入,传参
[问题] 定义了一个子函数,传参的内容是一个二维数组 编译提示错误 因为多维数组作为形参传入时,必须声明除第一位维外的确定值,否则系统无法编译(算不出偏移地址) [二维数组的传参] 方法一:形参为二维 ...
- 特定场景下的PLC 远程控制和数据读取
最近有位博友提出了一种应用场景,根据工作中实际遇到的类似的产品应用场景,记录下自己的解决方案. 场景: 需要在云端控制和采集各个站点的PLC数据.各个站点是分散的,每个站点有公网访问能力,但是分散站点 ...
- .net core Winform 添加DI和读取配置、添加log
首先新建配置类 public class CaptureOption { /// <summary> /// 是否自启 /// </summary> public bool A ...