[算法]将字符串中的*前置,非*字符相对位置不变

如ab**cd*e12变成 ****abcde12

char*
foo(char* str, int length){
    int i = length-1,j = length-1;
    while(i >= 0 && j >= 0){
        while(i >= 0 && ‘*‘ != str[i]){
            --i;
        }
        j = i - 1;
        while(j >= 0 && ‘*‘ == str[j]){
            --j;
        }
        if(j >= 0){
            char t = str[i];
            str[i] = str[j];
            str[j] = t;
        }
    }
    return str;
} 


本文基于知识共享署名-非商业性使用 3.0 许可协议进行许可。欢迎转载、演绎,但是必须保留本文的署名林羽飞扬,若需咨询,请给我发信

[算法]将字符串中的*前置,非*字符相对位置不变,布布扣,bubuko.com

时间: 2024-08-25 18:07:04

[算法]将字符串中的*前置,非*字符相对位置不变的相关文章

关于在字符串中查找某一个字符的位置的方法

一:准备 在程序的开始,我们可以确定使用一些知识点: indexof,lastIndexOf,StringBuilder. 二:程序 public class IndexOfDemo { @Test public void test1(){ String str="agyyayyaooea"; int posi,x=0; int lastPosi=str.lastIndexOf("a"); StringBuilder sb=new StringBuilder();

--如何将一个字符串中的所有非数字(0-9及小数点)字符全部除去

--如何将一个字符串中的所有非数字(0-9及小数点)字符全部除去 create function clear_num (@s nvarchar(100))--创建自定义函数 returns nvarchar(100) as begin while PATINDEX('%[^0-9.]%',@s)>=1 set @s=replace(@s,substring(@s,PATINDEX('%[^0-9.]%',@s),1),'')--使用replace(替换非数字字符为空字符串).substring(

用js识别字符串中的英文字母字符和非字符(汉字)

前不久去阿里的在线笔试,最后一道题可算是难倒了我,题目大概是这样的:用原生的js实现字符串中的英文字母字符和汉字的识别,汉字按照两个单位计算,英文和字符按照一个单位计算,乍一想真不知道有什么好办法,以前写c代码太多,就用c代码对ascii的办法来,笔试结束字符才知道,js是很高大上的玩意儿,这招行不通.在这里我介绍一种很简单很靠谱的方法,用unicode字符集的办法来解决. 首先脑补一下小知识:unicode字符集数字0 - 128是英文字母字符(半角)的范畴,在这以外是其他字符(全角),用js

在字符串中删除特定的字符

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"I am lavor_zl."和"I love you.",则删除之后的第一个字符串变成"amar_z".要求相对于第一个字符串的长度n时间复杂度为O(n). 解题思路:用一个bool数组保存是否在第二个字符串中出现的所有字符,数组下标表示字符,这个数组的长度为256,因为C/C++中字符总共有256个.遍历第一个字符串,用一个指针或数组下标access来表示当前访问第

数组去重及排序/0~10随机数字/字符串中出现最多的字符及次数

数组去重及排序: var arr = [1,5,1,2,6,8,1,81,9,0]; for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i] == arr[j]){ arr.splice(j,1); j--; } } } arr.sort(function(a,b){ return a-b; // 从小到大排序 }) alert(arr); // 0,1,2,5,6,8,9,81 arr.sort(fu

检测字符串中是否含有非法字符js代码

检测字符串中是否含有非法字符js代码:通常情况下,网站输入的字符串内容是需要经过检测的,因为有些字符带有一定的危险性,会对站点带来一定的危害,下面就介绍一下如何检测一个字符串是否含有非法字符,代码如下: function checks(str){ szMsg="[#_%&'\",;:=!^]"; alertStr=""; for(i=1;i<szMsg.length+1;i++){ if(str.indexOf(szMsg.substring

Jquery判断某字符串中是否包含某个字符

if(!(to_city_value.indexOf("(")>0){ //code..... } Jquery判断某字符串中是否包含某个字符,布布扣,bubuko.com

[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) == '\

实现一个函数,可以左旋字符串中的k个字符

实现一个函数,可以左旋字符串中的k个字符. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA #include<stdio.h>  #include<stdlib.h>  void spin(char arr[],int num) //spin函数用以完成旋转字符的功能  {  char arr1[5] = {0};  char *str = arr; //创建两个指针都指向原字符数组的首地址  char *start = arr;  char *mov