精华内容
下载资源
问答
  • 删除小写字母字符串中重复元素

    因为删除的是小写字母字符串,所以开辟一个数组b[26]
    首先初始化b全部为false
    如果对应的b[arr[i]]是false,则将false置为true,同时将arr[j] = arr[i],++j
    (也就是说,假如该字符串为aaaabb,则在第一次遇到a时,将false置为true,后面在遇到a时,不在满足if条件,当遇到b时,此时i=4,j=1,将arr[j] = arr[i],也就是把b放在a后面
    最后,在arr[j]位置放上’/0’

    void RemoveSameElement(char* arr)
    {
        bool b[26];
        memset(b, 0, sizeof(b));
        int j = 0;
        for (int i = 0; i < strlen(arr); ++i)
        {
            if (!b[arr[i]])
            {
                b[arr[i]] = true;
                arr[j] = arr[i];
                ++j;
            }
        }
        arr[j] = '\0';
    }
    

    除此以外,对代码进行优化。
    还可以用位示图来解决,只需要一个int(4字节32位)即可实现。

    void RemoveSameElement2(char s[])
    {
        unsigned int check = 0;
        int len = strlen(s);
        int j = 0;
        int v = 0;
        for (int i = 0; i < len; i++)
        {
            v = s[i] - 'a';
            if (!(check & (1 << v)))
            {
                s[j] = s[i];
                j++;
                check |= (1 << v);
            }
        }
        s[j] = '\0';
    }
    展开全文
  • 问题描述删除小写字母字符串中重复字符。如果可以,优先删除重复字符中排在比他小字符前面的字符。 比如,输入:bbcacdww;输出:bacdw 提示:暴力求解效率太低,考虑哈希思想。问题分析就是将原来字符串中的相同的...

    问题描述

    删除小写字母字符串中重复字符。如果可以,优先删除重复字符中排在比他小字符前面的字符。 比如,输入:bbcacdww;输出:bacdw

    提示:暴力求解效率太低,考虑哈希思想。

    问题分析

    就是将原来字符串中的相同的删除一个,这个考虑是否需要额外的存储空间,

    实现1、空间复杂度为O(1)

    void RemoveSame(string& s)
    {
        int temp = s[0];
        for (size_t i = 1; i < s.size(); ++i)
        {
            if (s[i] == temp)
                s.erase(i, i + 1);
            else
                temp = s[i];
        }
    }

    实现2、辅助空间不限制

    考虑到哈希或者,另外一个相同的存储空间,
    遍历原数组,将拷贝到新的存储空间,遇到相同的不拷贝。

    void RemoveSame2(string& s)
    {
        string temp(s,0,1);
        for (size_t i = 1; i < s.size(); ++i)
        {
            if (temp[temp.size()-1] != s[i])
                temp += s[i];
        }
        s = temp;
    }

    哈希表的方法

    void RemoveSame3(string& s)
    {
        char count[256] = { 0 };
        for (size_t i = 0; i < s.size(); ++i)
        {
            count[s[i]]++;
        }
        int k = 0;
        for (size_t j = 0; j < 256; ++j)
        {
            if (count[j] != 0)
                s[k++] = j;
        }
        s[k] = 0;
    }
    展开全文
  • 删除小写字母字符串中重复字符。比如,输入:bbcacdww;输出:bacdw。 void DeleteString(char* pstr) { if (pstr == NULL) return; //创建哈希表并初始化 char *pHash = pstr; const int tablesize = 256; ...

    删除小写字母字符串中重复字符。比如,输入:bbcacdww;输出:bacdw。

    void DeleteString(char* pstr)
    {
    	if (pstr == NULL)
    		return;
    	//创建哈希表并初始化
    	char *pHash = pstr;
    	const int tablesize = 256;
    	int hashtable[tablesize];
    	for (int idx = 0; idx < tablesize; ++idx)
    		hashtable[idx] = 0;
    	//统计每个字符出现的次数
    	while (*pHash != '\0')
    		hashtable[*(pHash++)]++;
    	pHash = pstr;
    	int k = 0;
    	while (*pHash != '\0')
    	{
    		if (hashtable[*pHash])
    		{
    			pstr[k++] = *pHash;
    			pHash++;
    			if (hashtable[*pHash] > 1)
    				pHash++;
    		}
    	}
    	pstr[k] = 0;
    }
    


    展开全文
  • //为了方便删除字符串中某些特殊的字符,这里用到了集合,方便删除指定位置的元素 for(int i=0;i();i++){ list.add(s.charAt(i)+""); } //遍历集合,进行字符创大小写的转换 for(int i=0;i();i++){ ...

    例如 String str=“abc123ABC@#”;调用这个函数执行后得到的结果是:ABC123abc。

    贴出代码:

    package com.lovo.t_9_22;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class StringExchange {
    	public static void main(String[] args) {
    		String s = "ABCD23efg#abcd89EFG^";
    		StringBuffer sb = new StringBuffer();
    		List<String> list = new ArrayList<String>();
    		//为了方便删除字符串中某些特殊的字符,这里用到了集合,方便删除指定位置的元素
    		for(int i=0;i<s.length();i++){
    			list.add(s.charAt(i)+"");
    		}
    		//遍历集合,进行字符创大小写的转换
    		for(int i=0;i<list.size();i++){
    			int size=(int)list.get(i).charAt(0);
    			if(size<=90&&size>64){//根据字母unicode编码值判断是大写字母,小写字母还是数字
    				String str = list.get(i).toLowerCase();
    				sb.append(str);
    			}else if(size>=97&&size<=122){
    				String str = list.get(i).toUpperCase();
    				sb.append(str);
    			}else if(size>=48&&size<58){
    				sb.append(list.get(i));
    			}else{
    				list.remove(i);
    			}
    		}
    		//		char str='9';//65-90,97-122,48-57
    		System.out.println(sb);
    	}
    }
    


    展开全文
  • 【数据结构】中删除小写字母字符串中重复字符
  • 将N个字符的数组,循环右移K位。时间复杂度O(N)。思路1申请一块空间大小为之前的2倍,然后左旋K位就代表,新字符串的新起始下标为之前的begin加偏移量k,把新字符串返回即可。这个时间复杂度为O(N)思路2保存0号字符的...
  • string f(string data) { StringBuilder sb = new StringBuilder(); int offset = 'A' - 'a'; if (!string.IsNullOrEmpty(data)) { foreach (var item in data) { ...
  • 实现循环右移和删除小写字母字符串中重复字符——题集(二十)  今天分享一下实现循环右移和删除小写字母字符串中重复字符的源代码和测试用例。   实现循环右移的源代码和运行示例。  将N个字符的数组,循环右移K...
  • 该程序应该执行以下操作:在给定的字符串中,由大写和小写拉丁字母组成: 删除所有元音, 插入字符“。” 在每个辅音之前 将所有大写辅音替换为相应的小写辅音。 元音是字母“ A”,“ O”,“ Y”,“ E”,“ U”...
  • 输入一个字符串,删除字符串出现的数字,然后将大写字母变为小写字母输出。 #include #include using namespace std; void main(){ string s; cin>>s; int l=s.length(); for(int i=0;i;i++){ ...
  • //删除输入字符串中的数字,并将大写改小写 #include<iostream> #include using namespace std; int main() { string s; cout输入字符串:"; cin>>s; for(int i = 0;i ();i++) { if(s
  • def del_lowerletters(s): if s>='a' and s<='z': return " " else: return s print("".join(map(del_lowerletters,"ahfAADDVCGHhgjggg"))) (map(del_lowerletter...
  • 华为机试—字符删除数字大写变小写 输入一个字符串,删除字符串出现的数字,然后将大写字母变为小写字母输出。  package com.soft.wk; import java.io.BufferedReader; import java.io.IOException; import ...
  • 汇编语言-删除字符串中的数字,将小写字母改写为大写字母
  • 59.删除字符串中的小写字母c

    千次阅读 2015-06-24 18:41:20
    给定程序中函数fun的功能是:从s所指字符串中删除所有小写字母‘c’ #define _CRT_SECURE_NO_WARNINGS #include void fun(char *s) { int i, j; for (i = j = 0;s[i] != '\0';i++) if (s[i] != 'c') s[j+...
  • 19.编写函数fun,该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。 例如:若程序执行时输入字符串为:turbo c and borland c++,从键盘上输入字符n,则输出后变为:turbo c ad ...
  • 输入一个字符串,删除字符串出现的数字,然后将大写字母变为小写字母输出 #include #include using namespace std; int main(int argc, char *argv[]) { string s; while(cin>>s) { for(string::size_type i=0;...
  • 我可以让它删除所有的html标记,以及脚本标记之间的所有内容,但是我不知道如何删除所有以反斜杠开头的字符。页面将有\t、\n和\x**,其中*似乎是任何小写字母或数字。在我如何编写一个用空格替换字符串的所有这些...
  • 删除反复字符

    2016-02-02 10:29:00
    删除反复字符 ...须要保证字符出现的先后顺序,而且区分大写和小写。 具体描写叙述: 接口说明 原型: intGetResult(constchar*input,char*output) 输入參数: input输入的字符串 ...
  • 删除重复字符

    2019-05-17 09:58:39
    删除重复字符 题目描述 牛牛有一个由小写字母组成的字符串s,在s中可能有一些字母重复出现。比如在"banana"中,字母’a’和字母’n’分别出现了三次和两次。 但是牛牛不喜欢重复。对于同一个字母,他只想保留第一次出现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,225
精华内容 890
关键字:

删除小写字符