剑指offer——替换空格&合并数组
2017-09-13 09:24
477 查看
题目:请实现一个函数,把字符串中的每个空格替换成”20%”。例如输入”We are happy.”,则输出”We%20are%20happy.”。
思路,从后往前替换,防止一个字符移动多次。减少时间复杂度
算法实现
相关题目:
有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2.请实现一个函数,把A2中的所有数字插入到A1中并且所有的数字是排序的。
原理一样。
算法实现:
思路,从后往前替换,防止一个字符移动多次。减少时间复杂度
算法实现
#include<iostream> using namespace std; void func1(char * desc, char * src) { int i = 0; int j = 0; while (src[i] != '\0') { if (src[i] == ' ') { desc[j] = '%'; desc[j + 1] = '2'; desc[j + 2] = '0'; j = j + 3; i++; } else { desc[j] = src[i]; i++; j++; } } desc[j] = '\0'; } void func2(char * src, int length) { // if (src == NULL|| length<=0) { return; } int len = 0; int space = 0; //获取空格个数 while (src[len] != '\0') { if (src[len] == ' ') space++; len++; } int newlength = len + space * 2; if (len>length) { return; } char * p = src+len, *q = src+i+2*space; while (p!=q) { if ((*p) == ' ') { *q = '0'; *(q - 1) = '2'; *(q - 2) = '%'; q = q - 3; } else { *q = *p; q--; } p--; } } int main(char * desc) { char str[100] = "We are happy"; char dd[100] = { '\0' }; //func1(dd, str); func2(str); cout << str << endl; return 0; }
相关题目:
有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2.请实现一个函数,把A2中的所有数字插入到A1中并且所有的数字是排序的。
原理一样。
算法实现:
#include <iostream> using namespace std; void func(int * a,int al, int * b,int bl) { int h_a = al - 1; //指向原A数组最后一个元素 int w = al + bl - 1; //指向总扩充完成最后一个元素位置,用于待存放元素的位置 int w_b = bl - 1; //指向原B数组最后一个元素 while (w_b >= 0) { if (a[h_a] > b[w_b]) { a[w] = a[h_a]; h_a--; } else if (a[h_a]<b[w_b]) { a[w] = b[w_b]; w_b--; } else { a[w] = b[w_b]; a[w - 1] = b[w_b]; h_a--; w_b--; w--; } w--; } } int main() { int A[100] = { 1, 3, 5, 7, 9, 12, 33 }; int B[10] = { 2, 3, 5, 5, 5, 9, 10 }; func(A, 7, B, 7); for (int i = 0; i < 14;i++) { cout << A[i] << endl; } return 0; }
相关文章推荐
- 合法IP&窗口最大值数组&打印素数&递归逆序一个栈&栈排序另一个栈&MyString&寻找数组中出现的重复字符&数组中的重复数字&逆序打印链表&空格替换成%20
- Offer题4 替换空格&常量字符串和字符串数组
- 替换空格 合并数组字符串
- 剑指offer面试题4:替换空格和合并两个有序数组
- 替换空格及合并两个有序的数组
- 替换空格(剑指offer)
- 程序员面试金典: 9.1数组与字符串 4字符串中空格全部替换为"%20"
- 剑指offer:4-替换空格
- 剑指Offer编程练习002——替换空格
- 《剑指offer》面试题4 替换空格为%20
- 剑指Offer(2)替换空格
- 剑指offer——替换空格
- LeetCode Merge Two Sorted Lists && 基础算法-合并有序数组
- 剑指offer,面试题四替换空格
- 剑指offer:替换空格(java)
- 剑指Offer(第二版)面试题5:替换空格
- LeetCode.23 Merge k Sorted Lists (对数组链表进行合并,归并排序 && 或者使用PriorityQueue实现)
- 4.替换空格||剑指offer
- 【C语言】请实现一个函数,把字符数组中的每个空格替换成“%20”
- JAVA实现替换空格(《剑指offer》牛客网StringBuffer)