以单词为单位反转字符串,要求不申请任何空间
来源:互联网 发布:叶问3游戏网络无连接 编辑:程序博客网 时间:2024/04/30 15:18
问题描述:
存在一个可读写的字符串,其中包括若干单词,单词间以空格区分,要求以单词为单位对字符串进行反转。
算法思想:
(1)利用异或运算可以不申请空间进行字符交换
(2)利用递归的思想
(3)使用strchr函数区分单词
解决方案:
include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include<iostream>
using namespace std;
void recursive_swap_char(char* lhs, char* rhs)// Using recursive to swap char.
{
if(rhs <= lhs)
return;
*lhs ^= *rhs;
*rhs ^= *lhs;
*lhs ^= *rhs;
recursive_swap_char(lhs + 1, rhs - 1);
}
void recursive_word_reverse(char* cur, char* next)// Using recursive to reverse chars of word
{
// If this is the last word, reverse as a string
if(next == NULL)
{
recursive_swap_char(cur, cur + strlen(cur) - 1);
return;
}
// Reverse char within current word
recursive_swap_char(cur, next - 1);
// Reverse next word
recursive_word_reverse(next + 1, strchr(next + 1, ' '));
}
char* reverse_by_word(char* src)
{
// If only one word, return directly
if(strchr(src, ' ') == NULL)
return src;
// Reverse whole string
recursive_swap_char(src, src + strlen(src) - 1);
// Reverse word
recursive_word_reverse(src, strchr(src, ' '));
return src;
}
void print(char* src)
{
cout << "src: " << src << endl;
cout << "dest: " << reverse_by_word(src) << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
char one[] = "one";
char one_two[] = "one two";
char one_two_three[] = "one two three";
char one_two_three_four[] = "one two three four";
char str_for_test[] = "There is a program for test";
print(one);
print(one_two);
print(one_two_three);
print(one_two_three_four);
print(str_for_test);
getchar();
}
- 以单词为单位反转字符串,要求不申请任何空间
- 以单词为单位反转字符串,要求不申请任何空间
- 以单词为单位,对字符串进行反转
- 不用任何库函数实现以单词为单位的字符串逆转算法(C#)
- 字符串以单词为单位进行反转,并且必须保留原有分隔符及其个数
- 以单词为最小单位翻转字符串
- 以单词为单位的翻转字符串
- 以单词为单位的翻转字符串
- 要求:不申请变量和空间反转字符串,用一个函数实现。VIA笔试题
- 不申请变量和空间反转字符串
- 不申请新的空间,字符串反转
- 以单词为单位进行的字符串翻转
- 实现以单词为单位的翻转字符串
- 以单词为单位倒序输出一个字符串
- 要求:不申请变量和空间 反转字符串 ,用一个函数实现。 异或^交换或者加减交换的典型应用! VIA 笔试题
- 字符串反转--单词不逆序
- 反转字符串但单词不反转
- 面试- 字符串反转 单词不反转
- ibatis学习之sqlMapConfig.xml文件配置详解
- Liunx下文件权限详解
- POJ 4011 Automated Telephone Exchange 解析
- pyclewn 在 vim(非gvim) 中的使用
- 思维导图
- 以单词为单位反转字符串,要求不申请任何空间
- C++中的输入输出流
- 黑马程序员_加速Java应用开发1:Spring/Hibernate应用调试时启动速度
- redo文件四
- 丢掉职场中的四个幻想
- uva-699 The Falling Leaves
- jacob完成word转html
- 黑马程序员_加速Java应用开发速度2:加速项目调试启动速度
- Python 列表和元组