[2013] 字符串(1)

笔试题目(机试,共两题) 
题目一:子串分离 
题目描述:
  
通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 
如果输入“abc
def gh i        d”,结果将是abc,def,gh,i,d, 

 
要求实现函数:   
void DivideString(const char *pInputStr, long
lInputLen, char *pOutputStr); 
 
【输入】  pInputStr:
 输入字符串 
            
lInputLen:  输入字符串长度                
  
【输出】  pOutputStr:
 输出字符串,空间已经开辟好,与输入字符串等长; 
【注意】只需要完成该函数功能算法,中间不需要有任何IO
的输入输出 
示例   
输入:“abc def gh i      
 d”
输出:“abc,def,gh,i,d,”

我编写的程序:并没有定义新的指针,还是用原先的输入指针pInputStr和原先的输出指针pOutputStr

用i标记指针的增长量(遍历到哪个字符了),iStart标记每个子字符串的开始,subLen标记每个子字符串的长度。


void DivideString(const char* pInputStr , long lInputLen , char* pOutputStr)
{
long j = 0,subLen=0,iStart;

for(long i=0;i<lInputLen;)
{
while(pInputStr[i]==‘ ‘)//跳过字符串前面的空格
i++;

iStart = i; //标记子串的开始iStart和子串的长度subLen

while(pInputStr[i]!=‘ ‘&&pInputStr[i]!=‘\0‘)//这里i的范围有可能超过lInput,所以要加上这一句pInputStr[i]!=‘\0‘
{
subLen++;
i++;
}
while(subLen)//subLen已经变为0
{ //注意i++这些可以在赋值时用减少代码量(如下句),在while循环条件中就不要直接用了(往往多加减了一次)
pOutputStr[j++] = pInputStr[iStart++];
subLen--;
}
if(pInputStr[i]!= ‘\0‘)//如果全都是空格,则不要输出逗号,如果末尾有空格,也不要再加逗号
pOutputStr[j++] = ‘,‘;
}
pOutputStr[j] = ‘\0‘;
}

[2013] 字符串(1),布布扣,bubuko.com

时间: 2024-10-12 03:55:34

[2013] 字符串(1)的相关文章

[2013百度软件研发笔试题] 求字符串中连续出现同样字符的最大值

题目完整描写叙述为:用递归的方式实现一个求字符串中连续出现同样字符的最大值.如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 下面是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\

[2013百度软件研发笔试题] 求字符串中连续出现相同字符的最大值

题目完整描述为:用递归的方式实现一个求字符串中连续出现相同字符的最大值,如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 以下是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\0'

BUPT复试专题—字符串转换(2013计院)

题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串.现在给你一个仅由小写字母组成的字符串,你需要用最小的花费,将其转换成一个简单串. 花费的计算规则如下:将a到z这26个小写字母从左到右排成一排,则每个字母都有左右两个邻居,我们认为a的左邻居是z,z的右邻居是a.一个字母只能转换成其相邻的字母,转换的花费为1.一个字母可以进行多次转换,例如将a转换成d,可以进行如下的步骤: a->b->

Excel 2013拼接Sql字符串

在做开发的过程中,经常需要根据Excel中的数据去数据库查询,少量数据还可以去复制粘贴,大量数据时就需要将Excel中的数据拼接成自己需要的Sql,以提升工作效率. 场景1:将某一列拼接成Sql中的In条件 假设现在有如下的Excel数据,我需要从数据库中查询出这些门店的数据 操作方法如下图所示: 将生成的一列数据复制到Visual Studito Code中,进行替换即可 场景2:将某一列拼接成C#中的List 假设现在有如下的Excel数据,我需要将这些值写在C#中的List<string>

字符串的模式匹配中的算法

字符串的模式匹配是一个比较经典的问题:假设有一个字符串S,称其为主串,然后还有一个字符串T,称其为子串. 现在要做的是,从主串S当中查找子串T的位置,如果存在返回位置值,如果不存在返回-1.另外主串又称为目标串, 子串称为模式串. 暴力匹配算法 这是一个经典的串匹配问题,涉及的算法也比较多,先讨论第一种简单的暴力算法,思路如下 将主串S的第pos个字符 与 子串T的第一个字符比较, 若相同,继续比较子串和主串后面的字符. 若不相同,那么从主串S的第(pos + 1)个字符开始继续向后匹配,直到匹

全国计算机等级考试二级C语言程序设计考试大纲(2013年版)

转自:http://www.freencre.com/c2_artde_28.html 基本要求 1. 熟悉Visual C++6. 0集成开发环境. 2. 掌握结构化程序设计的方法,具有良好的程序设计风格. 3. 掌握程序设计中简单的数据结构和算法并能阅读简单的程序. 4. 在Visual C++6. 0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力. 考试内容 一.C语言程序的结构 1. 程序的构成,main函数和其他函数. 2. 头文件,数据说明,函数的开始和结束标志以

Java中的字符串常量池

最近做到一个题目: 问题:String str = new String("abc"),"abc"在内存中是怎么分配的?    答案是:堆,字符串常量区. 题目考查的为Java中的字符串常量池和JVM运行时数据区的相关概念."abc"为字面量对象,其存储在堆内存中.而字符串常量池则存储的是字符串对象的一个引用. Java中的字符串常量池 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid&qu

SpringMVC @RequestBody接收Json对象字符串

转:http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024741.html 以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象.然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串.同时ajax请求的时候也

Chromium添加一段新字符串

参考:https://groups.google.com/a/chromium.org/forum/#!searchin/chromium-dev/tclib%7Csort:relevance/chromium-dev/zlAabuSVjGE/ozF2gqzaAiQJ 1.在generated_resources.grd文件中添加一段如下格式字符串: <message name="IDS_TOOLTIP_DOWNLOADS" desc="The tooltip for