5.输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

简介: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解法1:

class Solution {
public:

void replaceSpace(char *str,int length) {
    int flag1=0,flag2=0;
  for(int i=0;i<length-1;i++)
  {
      if(str[i]==' ')
          flag1++; 
  }
  for(int i=0;i<length-1+flag1*2;i++) 
  {
       if(str[i]==' ')
       {
           flag2++;
         str[i]='%';
           for(int j=0;j<length-1+(flag2-1)*2-i;j++)
           {
               str[length+1-j]=str[length-1-j];
           }
           str[i+1]='2';
           str[i+2]='0';
       }  
      
  }
}

};
答案错误:您提交的程序没有通过所有的测试用例
case通过率为87.50%

测试用例:
" "
对应输出应该为:

"%20%20%20"

你的输出为:

"%20%2%220"

修改成功:

用时5ms 480如下:

class Solution {
public:

void replaceSpace(char *str,int length) {
    int flag1=0,flag2=0;
  for(int i=0;i<length-1;i++)
  {
      if(str[i]==' ')
          flag1++; 
  }
  for(int i=0;i<length-1+flag1*2;i++) 
  {
       if(str[i]==' ')
       {
           flag2++;
         str[i]='%';
           for(int j=0;j<length-1+(flag2-1)*2-i;j++)
           {
               str[length+1+(flag2-1)*2-j]=str[length-1+(flag2-1)*2-j];//从找到的第一个空格开始往右移动数据 也就是涉及到了重复移动
           }
           str[i+1]='2';
           str[i+2]='0';
       }  
      
  }
}

};

解法2:

4ms 604k

class Solution {
public:

void replaceSpace(char *str,int length)
{
    int count=0;
  //找出所有的空格数
    for(int i=0;i<length;i++)
    {
        if(str[i]==' ')
            count++;
    }
  // 分两步执行 
    for(int i=length-1;i>=0;i--)
    {
        if(str[i]!=' ')
        {
            str[i+2*count]=str[i];
        }
        else
        {
            count--;
            str[i+2*count]='%';//递减2
            str[i+2*count+1]='2';//和后面比较  递减1
            str[i+2*count+2]='0';// 这行操作相当于字母位置对应的移动
        }
    }
}

};

目录
相关文章
|
7月前
|
Go Unix 开发者
Go语言time库,时间和日期相关的操作方法
Go语言time库,时间和日期相关的操作方法
104 0
Go语言time库,时间和日期相关的操作方法
|
7月前
|
Python Java Go
Python每日一练(20230428) 最长有效括号、矩阵最长递增路径、回文链表
Python每日一练(20230428) 最长有效括号、矩阵最长递增路径、回文链表
62 0
Python每日一练(20230428) 最长有效括号、矩阵最长递增路径、回文链表
|
算法 Python
python与算法:单链表剖分函数(对链表的元素可以按照是否满足特定功能切分为两个新的链表)
python与算法:单链表剖分函数(对链表的元素可以按照是否满足特定功能切分为两个新的链表)
93 0
|
7月前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
6月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
6月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
6月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
65 2
|
7月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
60 1
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表