面试经典题目:字符串翻转I am a student
2015-11-18 15:15
681 查看
只有比别人更早、更勤奋地努力,才能尝到成功的滋味
题目:写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数
,要求单词内字符的顺序不变,句子中单词以空格符隔开。
思路:先反转整个字符串,然后再反转字串。譬如先将“I am a student”反转为“tneduts a ma I”,然后再对每个字串(空格分割)反转一次。
代码(c++):
代码(c):
题目:写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数
,要求单词内字符的顺序不变,句子中单词以空格符隔开。
思路:先反转整个字符串,然后再反转字串。譬如先将“I am a student”反转为“tneduts a ma I”,然后再对每个字串(空格分割)反转一次。
代码(c++):
#include<iostream> #include<string> #include <algorithm> using namespace std; int main() { string str; while(getline(cin,str)) { int len = str.length(); reverse(str.begin(),str.end()); int from = 0; int i=0; int to; while(i<len) //之前此处写得是while(str[i]),会有数组越界的可能 { if(str[i]!=' ') { from = i; while(i<len&&str[i]!=' ') { i++; } to = i; reverse(str.begin()+from,str.begin()+to);//这句一定要放在if内部,之前做一个笔试题目,老是出错,后来才发现是这里的问题 } i++; } cout<<str<<endl; } return 0; }
代码(c):
#include <stdio.h> #include <stdlib.h> void ReverseString(char *s,int from,int to) { char t; while(from<to) { t=s[from]; s[from++]=s[to]; s[to--]=t; } } int main() { char str[100]; int l,i,from,to; printf("Enter a String: "); gets(str); l=strlen(str); ReverseString(str,0,l-1); printf("\n总体翻转:%s\n",str); i=0; while(str[i]) { if(str[i]!=' ') { from=i; while(str[i]&&str[i]!=' ') { i++; } i=i-1; to=i; } char t; while(from<to) { t=str[from]; str[from++]=str[to]; str[to--]=t; } i++; } printf("\nString:%s\n",str); return 0; }结果:
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- java数据结构和算法学习之汉诺塔示例
- Java数据结构及算法实例:三角数字
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- JavaScript中数据结构与算法(五):经典KMP算法