[Inside] Full Practice [assumption+Problem Solving+System Thinking]

本文介绍了一种用于过滤字符串中特定空白字符(如空格、制表符和换行符)的算法设计方案。该方案旨在去除前导和后导空白、压缩中间多余空白,并清理换行周围的空白。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1:已知一个字符串, 只含常见可打印ascii字符以及空格和换行, 要求进行如下过滤:
1, 过滤掉前导空白和后导空白;
2, 中间的连续空白字符, 只保留一个;
3, 删除换行前后的空白字符;

 

Assumption Questions:

1. 换行算空白吗

2. 是否支持Tab等其他空白字符,如果包含是否属于空白;

3. 是否可以修改原来字符串并作为结果返回;

4. 换行符是包含\r, \n和\r\n三种吗?

 

Problem Solving:

为了保证我们的处理考虑了各种情况,可以先Design一些Normal Cases:

//no change needed cases;

“assumption+problem”

“assumption+problem solving\n”

//spaces are pre and post postion

“  hello man   ”

“  hello man”

“hello man   “

//several spaces are in the middle + pre, post position

“hello    man"

“   hello    man   ”

// spaces around \n

“hello man   \n”

“hello man\n    ”

“hello man \n ”

“hello   man \n ”

“ hello man \n ”

“ hello \n    man ”

“ hello\nman"

“ \n hello \n man \n”

//special cases

“   ”

“ \n ”

“ ”

作为开始分析问题的一部分,可以不用设计的很完全,能够帮助分析问题就OK,不过要说一下,这不是完全的case list。需要注意不过上面的注释表明了设计case时要有结构化的思考方式,应该展现出来。

分析的结论是,因为需要过滤的空白字符可以很容易地发现其pattern(pre就是之前没有过非空格字符,post就是从某个点开始都是空白字符,中间的连续字符是之前出现过非空白字符, etc.),所以可以go through字符串,发现合适的pattern就执行相应的操作。

下一步是用一些test case来看看是否可以正常工作,这时我们也应该告诉面试官,我们go through的过程,如果发现错误,就修改一下,然后再选择一个做一下,2-3个就不错了。

 

 

问题2:

转载于:https://www.cnblogs.com/whyandinside/archive/2012/12/26/2833784.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值