Java教程

算法之字符串分割

本文主要是介绍算法之字符串分割,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目描述如下:

分析:之前做过这样的一道题,但是写得太繁琐,今天重新做了这道题。很明显的感觉做出来的效率提升了很多。

这道题的一个难点是,怎么样处理字符串长度大于8,截断后又大于8,又需要截断的情况。很显然,这种场景的处理逻辑应该要用到while循环。完整的代码如下:

 1 #include <iostream>
 2 
 3 
 4 #include "iostream"
 5 #include "string"
 6 using namespace std;
 7 int main()
 8 {
 9     string input;
10     while (cin >> input)
11     {
12         while (input.size() > 8)
13         {
14             cout << input.substr(0, 8) << endl;
15             input = input.substr(8, input.length());
16         }
17         int temp= input.size();
18         for (int i = 0; i < 8 -temp; i++)//这个操作应该有更好的办法.注意这里写是一个bug,因为input-size是不断累加的
19         {
20             input = input + "0";
21         }
22         cout << input << endl;
23     }
24 
25     return 0;
26 }
27 

 

总结:考察知识点:

1、字符串求子串的函数substr()的用法

2、问题理解、然后建模的编程能力。比如讲问题抽象出while循环来处理

之前的一个写法,现在的写法相对来讲是比以前的要简洁不少,主要是对处理逻辑理解的更清晰。可以对照一下:

 1 #include "string.h"
 2 #include <vector>
 3 #include "iostream"
 4 using namespace std;
 5 int main()
 6 {
 7     vector<string> input_string_vector;
 8     string input_string;
 9     while(cin>>input_string)
10     {
11         if(input_string.size()<8)
12         {
13             int number=input_string.size();
14             for(int i=0;i<8-number;i++)
15             {
16                 input_string=input_string+'0';
17             }
18             input_string_vector.push_back(input_string);
19            
20         }
21          else if(input_string.size()==8)
22         {
23            
24             input_string_vector.push_back(input_string);
25         }
26          else if(input_string.size()>8)
27         {//1
28              
29              while(input_string.size()>8)
30              {
31                    
32                  input_string_vector.push_back(input_string.substr(0,8));
33                  input_string=input_string.substr(8,input_string.size());
34              }
35             
36                if(input_string.size()==8)
37             {
38               input_string_vector.push_back(input_string);
39            }
40             if(input_string.size()<8)
41             {
42                  int number=input_string.size();
43                 for(int i=0;i<8-number;i++)
44                 {
45                     input_string=input_string+'0';
46                 }
47                 input_string_vector.push_back(input_string);
48            }
49           //  if(input_string.size()==8)
50           //  {
51           //    input_string_vector.push_back(input_string);
52         //   }
53         }//1
54      
55     }
56     
57     
58        for(int i=0;i<input_string_vector.size();i++)
59         {
60             cout<<input_string_vector[i]<<endl;
61         }
62     
63     return 0;
64     
65 }

 

这篇关于算法之字符串分割的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!