leetcode AC1 感受
在网上第一个AC还是蛮高兴的,之前试了不少练习编程的方法,感觉不怎么适合自己,在OJ上做题的确是一个能够锻炼的方法。 之前一直研究学习的方法,往简单的说是认知、练习,往复杂的说是,保持足够input,input内容足够narrow,难度适合,逐渐+i ,总结并输出。
不过第一次成功很高兴,leetcode不愧是入门级,适合没怎么自己写过代码的人练手。
题目:地址:https://oj.leetcode.com/problems/reverse-words-in-a-string/
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
class Solution:
# @return a string
def reverseWords(self, s):
#s = raw_input("input string \n")
#s = "a blue sky"
s = s.strip() #clean the space in head and end
#print s
b = [] # save localtion of space
a = ''
i = 0 # index
for j in s :
if s[i] == " ":
b.append(i)
i = i + 1
if b == []: #only one word
return s
#print b
#print len(b)
#print s[:2]+s[2:6]+s[6:]
i = 0
for j in b[len(b)::-1]:
# print j,
# print i
if i == 0: #the last word (begin)
a=s[j+1:].strip()
#print a
elif j ==b[0]: #the first word (end)
a = a.strip() +" "+s[j+1:i].strip()# +" " + s[:j].strip()
a = a.strip() + " "+ s[:j].strip()
#print a
else:
a = a.strip() +" " +s[j+1:i].strip()
#print a
if len(b) == 1: #only one space
a = s[j+1:]+ " "+ s[:j]
#print a
i = j
# print j,i
return a
代码写的丑的很,其实本身内容比较好实现,但是由于不熟悉oj且不了解python,故写的磕磕巴巴,甚至内容感觉就不怎么符合软件工程的易读性,写下来以免将来忘掉。
我的想法就是,1、记录原字符串的空格的位置;2、以空格位置为索引倒着输出s
先说收获:
1、略微熟悉了python的循环的运作,有时候感觉还是挺难用的,脑海还是有c的想法,这个无所谓吧,语言特性这个玩意现在还没有功夫去研究
2、 str 和 list 都可以进行切片,s[i:j] 是表示的从i到j,但是s[j]并不包括在里面
s1[0:5:2] # 从下标0到下标4 (下标5不包括在内),每隔2取一个元素 (下标为0,2,4的元素)
s1[2:0:-1] #从下标2到下标1
从上面可以看到,在范围引用的时候,如果写明上限,那么这个上限本身不包括在内。
尾部元素引用
s1[-1] # 序列最后一个元素
s1[-0] # 就是s1[0]
+ 连接字符串;相邻的两个字符串文本自动连接在一起 'str' 'ing' # 'string' ; str.strip()可以把字符串头和尾的多余空格删掉
再说教训:
1、对python和oj本身不熟悉
2、考虑边界情况很少
3、变量命名非常随意,以后肯定会看不懂
4、if 和elsif 是不能同时运作的
5、循环只有一遍的时候,出现了问题,不得不加上最后的if,算不算是另一种边间没考虑好?(分别是:输入内容本身的复杂、循环的边界问题)
最后说感受:
估计是看python代码太少,现在对于编程也不能说是一种入门的感觉
参考:
http://www.pyth(去掉)ontab.com/html/pythonshouce27/controlflow.html#tut-functions
http://www.python(去掉)tab.com/html/pythonshouce27/controlflow.html#if
http://www.pytho(去掉)ntab.com/html/pythonshouce27/introduction.html#tut-strings
http://www.cnblogs.com/vamei/archive/2012/05/28/2522677.html
leetcode AC1 感受的更多相关文章
- 初刷LeetCode的感受
自从上个月进入实验室的云安全项目组后,因为要接触到实际的代码,在实验室博士的建议下我们项目组的硕士开始刷LeetCode练习编程能力,保持每周抽空刷几道算法题.虽然刷的不多,到现在一共只刷了不到30题 ...
- python leetcode 1
开始刷 leetcode, 简单笔记下自己的答案, 目标十一结束之前搞定所有题目. 提高一个要求, 所有的答案执行效率必须要超过 90% 的 python 答题者. 1. Two Sum. class ...
- LeetCode OJ学习
一直没有系统地学习过算法,不过算法确实是需要系统学习的.大二上学期,在导师的建议下开始学习数据结构,零零散散的一学期,有了链表.栈.队列.树.图等的概念.又看了下那几个经典的算法——贪心算法.分治算法 ...
- 算法学习笔记(LeetCode OJ)
================================== LeetCode的一些算法题,都是自己做的,欢迎提出改进~~ LeetCode:http://oj.leetcode.com == ...
- 【LeetCode题意分析&解答】38. Count and Say
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- leetcode刷题总结
题外话 今年大三,现正值寒假时间,开学就开始大三下学期的生活了. 在大三临近结束的时间,也就是复习考试的时间里,我每天都会用早上的时间来刷codewars.刚开始玩的时候,一到8kyu的题目如果稍微难 ...
- leetcode算法题(JavaScript实现)
题外话 刷了一段时间的codewars的JavaScript题目之后,它给我最大的感受就是,会帮助你迅速的提升你希望练习的语言的API的熟悉程度,Array对象.String对象等原生方法,构造函数. ...
- LeetCode 287. Find the Duplicate Number (找到重复的数字)
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...
- LeetCode 80 Remove Duplicates from Sorted Array II [Array/auto] <c++>
LeetCode 80 Remove Duplicates from Sorted Array II [Array/auto] <c++> 给出排序好的一维数组,如果一个元素重复出现的次数 ...
随机推荐
- 模拟远程SSH执行命令的编解码说明
模拟一个SSH“远程”执行命令并获取命令结果的一个程序: 1.在C/S架构下,当客户端与服务器建立连接(这里以TCP为例)后,二者可以不断的进行数据交互.SSH远程可以实现的效果是客户端输入命令可以在 ...
- python面向对象 : 属性, 类方法, 静态方法
一. 属性 属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理. property应用 : 类似于bmi这种,area,周长.... 需要用到计算的. # 求BMI体质数:BMI = 体 ...
- [UE4]认识CanvasPanelSlot,Construct Object From Class动态创建UI控件
Canvas Panel Slot是UserWidget的Canvas Panel组件容器内的组件特有的属性. 只有放置在Canvas Panel容器内才会有Canvas Panel Slot属性 可 ...
- [UE4]打包EXE
Building configuration 1.Development:开发模式.不会压缩文件 2.Shipping,成品模式.移动版本会自动压缩文件
- nginx file not found 错误处理小记
安装完php php-fpm nginx 后访问php出现file not found错误,html就没问题配置文件server 段如下 server { listen 80; server_name ...
- WGS84投影的WKID说明
关于WKID的几点说明 1.ArcGIS Server 10中: EPSG 3857 WGS_1984_Web_Mercator_Auxiliary_Sphere ESRI 10211 ...
- php数组和部分操作函数
1. 数组定义 数组的定义使用 array()方式定义,可以定义空数组: <?php $number = array(1,3,5,7,9); //定义空数组 $result = array(); ...
- Motherboard Chipsets and the Memory Map.主板芯片组与内存映射
原文标题:Motherboard Chipsets and the Memory Map 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外 ...
- Angularjs给动态生成的元素绑定事件
//获取动态生成的元素 getJqforAnguar:function(jqid){ angular.element(document).injector().invoke(function($com ...
- [java,2017-12-01] 播放音频文件
废话不多说,直接上代码 jar包 <!-- 2017-12-01音频播放jar包 --> <dependency> <groupId>javazoom</gr ...