zoukankan      html  css  js  c++  java
  • 字符扫描剑指Offer读书笔记之第二章2字符替换Strut2教程java教程

    每日一贴,今天的内容关键字为字符扫描

        给定一个字符串str和一个子串SubStr,如果str面里的空间充足,写一个函数将str面里的字符ch替换成SubStr。书中只是一个特例:将格空替换成%20.

        标题析分:

        如果早年到后扫描str,碰到一个ch,那么ch前面的有所字符都要向后挪SubLen-1个位置。这样做的效率肯定是不高的,怎么在O(n)的时间复杂度内成完这个操纵呢。早年到后扫描不可,那就从后到前扫描。如果先预知道了有多少个字符须要替换,是否是能就先预后之替换后之str的长度,也就是最后一个字符的位置,那就从最后一个字符开始存呗。步调:

        *扫描str,定确ch的个数为cnt。

        *算计新str的小大,为cnt*(SubLen-1)+StrLen

        *从后到前扫描,碰到ch,从后到前制复SubStr

        码代如下:

        每日一道理
    共和国迎来了她五十诞辰。五十年像一条长河,有急流也有缓流;五十年像一幅长卷,有冷色也有暖色;五十年像一首乐曲,有低音也有高音;五十年像一部史诗,有痛苦也有欢乐。长河永远奔流,画卷刚刚展开,乐曲渐趋高潮,史诗还在续写。我们的共和国正迈着坚定的步伐,跨入新时代。
    //失掉指定字符的数量
    int GetSpaceCount(char *str, int nLen, char ch)
    {
    	if(!str || nLen < 1)
    		return -1;
    	int cnt = 0;
    	for(int i = 0; i < nLen; ++i)
    	{
    		if(str[i] == ch)
    			++cnt;
    	}
    	return cnt;
    }
    //将指定字符换成指定字符串
    void Replace(char *SrcStr, char *DesStr, char ch)
    {
    	if(!SrcStr || !DesStr)
    		return;
    	int SrcLen = strlen(SrcStr);
    	int DesLen = strlen(DesStr);
    	int cnt = GetSpaceCount(SrcStr, SrcLen, ch);
    	int i,k;
    	k = cnt * (DesLen - 1) + SrcLen;//如果有要必须要查检够不够放
    	SrcStr[k]= '\0';
    	for(i = SrcLen - 1; i >= 0; --i)
    	{
    		if(SrcStr[i] == ch)
    		{
    			for(int j = DesLen - 1; j >=0; --j) 
    				SrcStr[--k] = DesStr[j];
    		}
    		else
    			SrcStr[--k] = SrcStr[i];
    	}
    }
    int main()
    {
    	char Str[100];
    	char SubStr[10];
    	char ch;
    	while(gets(Str) && gets(SubStr))
    	{
    		scanf("%c", &ch);
    		getchar();
    		Replace(Str, SubStr, ch);
    		puts(Str);
    	}
    }

        关相标题链接:单词反转。考参另外一篇博客

        

        http://blog.csdn.net/kay_zhyu/article/details/8769026

        

        。其实有些题很简单,但是怎么样把码代写得英俊,那就须要事本了。

    文章结束给大家分享下程序员的一些笑话语录: 现在社会太数字化了,所以最好是有一个集很多功能于一身的设备!

  • 相关阅读:
    一篇就搞懂Mysql存储引擎和索引的文章
    ShardedJedisPipeline中sync()和syncAndReturnAll()区别
    17.win10安装Nginx及负载均衡配置,实现代理访问内网机器
    iDempiere 使用指南 系统安装 以及 virtualbox虚拟机下载
    程序员学数学【整理】
    element 表单校验
    draggable 拖拽列表排序(指定被拖拽的子元素)
    导出多个表的excel文件
    js自定义鼠标的图片
    table 导出简单的excel
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3053782.html
Copyright © 2011-2022 走看看