C语言字符串替换空格实例详解

目录
  • 一、题目描述
  • 二、思路分析
  • 三、整体代码
  • 总结

一、题目描述

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例:

输入:s = "We are happy."

输出:"We%20are%20happy."

限制:0 <= s 的长度 <= 10000

二、思路分析

思路

C语言的字符串无法改变大小,所以无法直接在原来的字符串上操作。于是我们先统计空格个数,算出替换后的字符串的大小,并申请一块新内存。(注意要多申请一个byte,放字符串结尾符’\0’)。再次遍历这个字符串,将空格替换成%20。

算法流程:首先得到字符串s的长度

遍历这个字符串,统计空格个数

计算新的字符串需要的空间,并申请一块新内存

遍历字符串s,如果没有空格则进行正常赋值。如果碰到空格,则在新字符串对应的三个位置放上%20

三、整体代码

整体代码如下

char* replaceSpace(char* s){
    int count = 0;
    int len = 0;
    while(s[len] != '\0'){
        len++;
    }

    int i = 0;
    for(i = 0; i < len; i++){
        if(s[i] == ' '){
            count++;
        }
    }

    char* str = (char*)malloc(sizeof(char)*(len + 1 + count * 2));

    int j = 0;
    for(i = 0; i < len; i++, j++){
        str[j] = s[i];
        if(s[i] == ' '){
            str[j++] = '%';
            str[j++] = '2';
            str[j] = '0';
        }
    }
    str[j] = '\0';

    return str;
}

运行,测试通过

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • C语言字符串函数入门

    目录 实现字符串库函数功能 1.strlen函数 2.strcmp函数 3.strcpy函数 4.strcat函数 5.strupr函数 6.strlwr函数 总结 实现字符串库函数功能 有些时候我们可能会被限制无法使用库函数,这个时候我们需要编写自己的库函数.但了解了字符串库函数的功能之后,想要实现并不困难,今天我们用数组和循环来简单实现几个字符串库函数的功能. 1.strlen函数 strlen函数使用来求字符串长度的,遇到\0就会停止,并返回字符串的长度,接下来根据这个特性来编写一下我们自

  • Java 替换空格

    请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. public class Solution { public String replaceSpace(StringBuffer str) { for(int k=0;k<str.length();k++) { char index=str.charAt(k); if(index==' ') { str.replace(k,k+

  • c语言求两个字符串的交集

    目录 一.main()函数 二.fun1()函数 三.fun2()函数 注意; 总结 求两个字符串的交集,看似简单,实则需要考虑的细节很多. 我的思路: 1.将两个字符串简化,将里面重复的字母减少为一个. 2.拼接两个字符串,借助循环把重复出现两次的字符找出来. 有了思路开始写代码. 一.main()函数 思路: 1.定义两个储存字符串的数组tt[M],pp[M] 2.定义指针*p接收fun2() 返回值,输出交集 3.输入两个字符串(此处注意越界问题) 4.调用函数 5.输出交集 #inclu

  • postgresql 替换空格 换行和回车的操作

    我就废话不多说了,大家还是直接看代码吧~ UPDATE table set name = trim(name);//用来删除数据前后的空格 UPDATE table set name = rtrim(name);//用来删除数据前的空格 UPDATE table set name = ltrim(name);//用来删除数据后的空格 UPDATE table set name = REPLACE(name,' ','');//用来删除数据中的空格 UPDATE table set name =R

  • C语言面试C++字符串替换空格示例

    字符串替换空格(多换一) 面试题: 面试题需要考虑规范,算法,代码,可移植性,还有鲁棒性等,考虑了这些之后再下手就会很舒服 首先我看到是%20替换空格,万一面试官说换其他的然后你很快的改了出来这也是一种本事,所以函数是必不可缺的,也最好有人机交互的样子,反正他有没有说写死. 代码 这里时间复杂度也是O(n),鲁棒性也不错,基本是可以拿下offer的代码 #include<stdio.h> #include<assert.h> #include<string.h> cha

  • C语言字符串替换空格实例详解

    目录 一.题目描述 二.思路分析 三.整体代码 总结 一.题目描述 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制:0 <= s 的长度 <= 10000 二.思路分析 思路 C语言的字符串无法改变大小,所以无法直接在原来的字符串上操作.于是我们先统计空格个数,算出替换后的字符串的大小,并申请一块新内存.(注意要多申

  • Linux C字符串替换函数实例详解

    Linux C字符串替换函数实例详解 最近学习linux 的基础编程知识,字符串替换函数,在网上找下资料,觉得这篇文章写的不错,记录下来,和大家分享一下: 实例代码: #include <stdio.h> #include <string.h> #include <stdlib.h> /** * * @author: cnscn@163.com * @reference: lovesnow1314@http://community.csdn.net/Expert/Top

  • Kotlin语言编程Regex正则表达式实例详解

    目录 前言 Regex 构造函数 常用正则表达方法 示例展示 1.containsMatchIn(input: CharSequence) 包含指定字符串 2.matches(input: CharSequence) 匹配字符串 3.find(input: CharSequence, startIndex: Int = 0) 查找字符串,并返回第一次出现 4.findAll(input: CharSequence, startIndex: Int = 0) 查找字符串,返回所有出现的次数 5.r

  • python 遍历字符串(含汉字)实例详解

    python 遍历字符串(含汉字)实例详解 s = "中国china" for j in s: print j 首先一个,你这个'a'是什么编码?可能不是你所想的gbk >>> a='中国' >>> a 这样试试看,如果出来是6个字(word),说明是utf-8,如果是4个字,说明gbk. 另外,不管是utf-8还是gbk,都不能这样遍历,因为这里它会一个字一个字拿出来.虚拟机把a当成一个长度为len(a)的字符串了. 接下来是遍历问题. Linux

  • Java 生成随机字符串数组的实例详解

    Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List<String>之后,往其中添加十条随机字符串 2.每条字符串的长度为10以内的随机整数 3.每条字符串的每个字符都为随机生成的字符,字符可以重叠 4.每条随机字符串不可重复 将涉及到的知识有: String.StringBuffer.ListArray.泛型.Collections.sort.foreach.Random等相关知识,算是

  • java 字符串截取的实例详解

    java 字符串截取的实例详解 题目 在java中,字符串"abcd"与字符串"ab你好"的长度是一样,都是四个字符. 但对应的字节数不同,一个汉字占两个字节. 定义一个方法,按照指定的字节数来取子串. 如:对于"ab你好",如果取三个字节,那么子串就是ab与"你"字的半个,那么半个就要舍弃. 如果取四个字节就是"ab你",取五个字节还是"ab你". 仅考虑GBK和utf-8编码 实例代

  • java 字符串反转的实例详解

    java 字符串反转的实例详解 1.new StringBuffer("abcde").reverse().toString(); 2.通过char数组进行转换, 代码如下 package com.test.reverse; public class TestReverse { public static void main(String[] args) { // 声明任意字符串 String str = "abcde"; //将字符串转换成char[] char[

  • C/C++语言宏定义使用实例详解

     C/C++语言宏定义使用实例详解 1. #ifndef 防止头文件重定义 在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成 一个可执行文件时,就会出现大量"重定义"的错误.在头文件中实用#ifndef #define #endif能避免头文件的重定义. 方法:例如要编写头文件test.h 在头文件开头写上两行: #ifndef TEST_H #define TEST_H //一般是文件名的大写 头文件结尾写上一行: #endif 这样一个工程文件里同时

  • Python3.5字符串常用操作实例详解

    本文实例总结了Python3.5字符串常用操作.分享给大家供大家参考,具体如下: 一.输入与输出 #输入与输出 str = input("请输入任意字符:") print(type(str)) #input获取的数据类型皆为字符串 print(str) 运行结果: 请输入任意字符:abc <class 'str'> abc #格式化输出 name = "liu" age = 18 print("My name is %s, and I'm %d

  • GO语言数组和切片实例详解

    本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式:[length]Type .[N]Type{value1, value2, ... , valueN}.[...]Type{value1, value2, ... , valueN} 如下: 复制代码 代码如下: func test5() {     var iarray1 [5]int32    

随机推荐