一个字符串小题目

有一个字符串"You are good", 我们称之为 s1, 另有一个字符串"uro", 称之为 s2. 设计一个算法,将s1 里同时存在于 s2 的字符去除。比如s1,在s2 的条件下,结果应为"Y ae gd". 使用内存空间越小,速度越快越好。

























我的思路:
1.创建两个整数指针 i,和pointer. 起始都为0;
2.根据字符串长度遍历该字符串,每次将i 位置的字符到s2 中查询
     3. 如果不存在,那么i,和pointer 各自增1. 并且将i 位置的字符拷贝到 pointer 位置
     4. 如果存在,只有i 增加1.
5. 将pointer 位置以及之后的字符用空字符代替。
c# 程序:

    public class Program {
        public static void Main() {
            String s1 = "uro";
            String s2 = "You are good";
            char[] s1Array = s1.ToCharArray();
            char[] s2Array = s2.ToCharArray();
            int length = s2.Length;
            int pointer = 0;
            for (int i = 0; i < length; i++) {
                if (!Exist(s1Array, s2Array[i])) {
                    s2Array[pointer] = s2Array[i];
                    pointer++;
                }
            }
            for(int i=pointer;i<length;i++){
                s2Array[i] = ' ';
            }
            Console.WriteLine(new String(s2Array));
        }
 
        public static bool Exist(char[] s1, char c) {
            foreach (var item in s1) {
                if (item == c) {
                    return true;
                }
            }
            return false;
        }
    }

 

你可能感兴趣的:(字符串,职场,题目,休闲)