mmp,写完没保存,又得重新写。晚上写了简历,感觉身体被掏空,大学两年半所经历的事,一张A4纸都写不满,真是一事无成呢。这操蛋的生活到底想对我这个小猫咪做什么。

今后要做一个早起的好宝宝~晚起就诅咒自己期末考试考的不会、会的不考。

题目:

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

  1. P A H N
  2. A P L S I I G
  3. Y I R

And then read line by line: "PAHNAPLSIIGYIR"

题目一看并不难,通过下标来决定该位置的字母应该放在哪里,在此就不赘述公示了,纸上推一推就出来了。不过写这个题的时候自己犯了一个大错误,就是嵌套循环中更新了遍历字符串的下标变量,但是循环终止条件没有考虑越界。这也是我经常犯的一个错误,下次不能再犯了,不然一点长进都没有。

  1. class Solution {
  2. public:
  3. string convert(string s, int numRows) {
  4. string result[numRows];
  5. int sum=2*numRows - 2;
  6. int i = numRows;
  7. if (s.size()<=numRows || numRows == 1)
  8. return s;
  9. for(int j = 0; j < numRows&&j<s.size(); j++){
  10. result[j] = s[j];
  11. }
  12. while(i<s.size()){
  13. int k = 0;
  14. while(k<numRows -2 && i<s.size())
  15. {
  16. if(i%sum == numRows+k && i%sum != sum)
  17. result[numRows-2-k] = result[numRows-2-k] + s[i];
  18. i++;
  19. k++;
  20.  
  21. }
  22. for(int j = 0; j < numRows && i < s.size(); j++){
  23. result[j] = result[j] + s[i];
  24. i++;
  25. }
  26. }
  27. string conversion;
  28. for(int j = 0; j < numRows && j < s.size(); j++)
  29. conversion = conversion + result[j];
  30. return conversion;
  31. }
  32. };

  

提交代码后,42ms,击败15%。我想不出更好的解法了。看看大佬的,mmp,也没看懂。

  1. class Solution {
  2. public:
  3. string convert(string s, int numRows)
  4. {
  5. vector<string> substring(numRows);
  6. int l = s.length();
  7. int counter = ;
  8.  
  9. if(numRows == )
  10. return s;
  11.  
  12. int i = ;
  13. while (i < numRows)
  14. {
  15. if (counter == l)
  16. break;
  17.  
  18. substring[i] += s[counter];
  19. counter++;
  20.  
  21. if (i == (numRows-) && counter != l)
  22. {
  23. for(int j = i - ; j>=;j--)
  24. {
  25. if (counter == l)
  26. break;
  27.  
  28. substring[j] += s[counter];
  29. counter++;
  30. }
  31. i=;
  32. }
  33. ++i;
  34. }
  35.  
  36. string result ;
  37.  
  38. for(int k = ; k<numRows; k++)
  39. {
  40. result += substring[k];
  41. }
  42. return result;
  43. }
  44. };

C++ leetcode::ZigZag Conversion的更多相关文章

  1. 6.[leetcode] ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  2. LeetCode ZigZag Conversion(将字符串排成z字型)

    class Solution { public: string convert(string s, int nRows) { string a=""; int len=s.leng ...

  3. LeetCode: ZigZag Conversion 解题报告

    ZigZag ConversionThe string "PAYPALISHIRING" is written in a zigzag pattern on a given num ...

  4. [leetcode]ZigZag Conversion @ Python

    原题地址:https://oj.leetcode.com/problems/zigzag-conversion/ 题意: The string "PAYPALISHIRING" i ...

  5. [LeetCode]ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  6. LeetCode——ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  7. [LeetCode] ZigZag Conversion [9]

    称号 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows li ...

  8. Leetcode:ZigZag Conversion分析和实现

    问题的大意就是将字符串中的字符按锯齿状(倒N形)垂直由上向下放置,最后水平从左向右读取.比如 ABCDEFGHIJKLMN,4表示 A          G      M B      F  H    ...

  9. LeetCode解题报告—— 2 Keys Keyboard & Longest Palindromic Substring & ZigZag Conversion

    1. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You ...

随机推荐

  1. Git入门看这一篇就够了! (转)

    Git 的三种状态 Git 有三种状态,你的文件可能处于其中之一: 已提交(committed):数据已经安全的保存在本地数据库中. 已修改(modified):已修改表示修改了文件,但还没保存到数据 ...

  2. Qt5学习记录:QString与int值互相转换

    1)QString转int 直接调用toInt()函数 例: QString str("100"); int tmp = str.toInt(); 或者: bool ok; QSt ...

  3. C++ 复习要点、面试常见问题总结

    本文总结一下C++面试时常遇到的问题.C++面试中,主要涉及的考点有: 关键字极其用法,常考的关键字有const, sizeof, typedef, inline, static, extern, n ...

  4. 小程序之image图片实现宽度100%,高度自适应

    哇 今天搞了半天  图片一直变形啊啊啊啊 宽度100%   高度给100%   给auto   完全不管用啊啊啊啊 然后最后最终!!!! 首先我们要给我们的图片一个100%的宽度!让它自适应!! .g ...

  5. java根据URL获取网页编码

    由于很多原因,我们要获取网页的编码(多半是写批量抓取的脚本吧...嘻嘻嘻) 注意: 如果你的目的是获取不乱码的网页内容(而不是根据网址发送post请求获取返回值),切记切记,移步这里 java根据UR ...

  6. 转 lightmap

    小记一下用法与问题,时更 surface shader就不用操心了,自带lightmap计算 主要是vertex fragment shader部分 Unity5 bake light map有三种情 ...

  7. async await 多线程

    async await 并没有开启多线程  出现await的地方 只是开启了一个子线程继续往后执行  主线程返回 防止阻塞 相当于  await customerRepository.getall() ...

  8. 自动化测试基础-断言(Assert)使用方法

    junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类.1.assertTrue/False([String message,]boolean condi ...

  9. 牛客小白月赛7 B 自杀游戏

    自杀游戏 思路: sg函数 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include&l ...

  10. c# datagirdview

    1.设置位于控件最左上角的标题单元格内容 this.dataGridView1.TopLeftHeaderCell.Value = "序号"; 2. 3.