快慢指针____函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移
生活随笔
收集整理的這篇文章主要介紹了
快慢指针____函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
函數(shù)將字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改變非'*'字符的先后順序,函數(shù)返回串中字符'*'的數(shù)量。如原始串為:ab**cd**e*12,處理后為*****abcde12,函數(shù)并返回值為5。(要求使用盡量少的時間和輔助空間
類似快慢指針
i j初值為length - 1 ,如果為0則順序會產(chǎn)生一定的顛倒
i指向字母,容易保證字母指針指的靠前(只要i指向字母 就跟j指向的*換位置,換位置后則i--,j-- ;i指向*號時,i-- count++)
j指向*
交換代碼部分替換為
array[j] = array[i];
array[i] = '*';
為何出錯?
?
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>int fun(char array[]) {int length = strlen(array);int i, j, count;char temp;for(i = j = length - 1, count = 0; i >= 0; ){if(array[i] != '*'){temp = array[j];array[j] = array[i];array[i] = temp;i--;j--;}else{i--;count++;} } return count; }int main() {char a1[] = "ab**cd**e*12";printf("%d\n", fun(a1));puts(a1);return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/wwjyt/archive/2013/02/23/3153123.html
總結(jié)
以上是生活随笔為你收集整理的快慢指针____函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乌鲁木齐颐和花园是毛坯房还是精装修?
- 下一篇: asp.net webservice 添