C# 编程实战进阶:字符串与字符串数组 (3)

发布于:2025-07-23 ⋅ 阅读:(24) ⋅ 点赞:(0)

目录

1、给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

2、无重复字符的最长字符串 ,给定一个字符串 s 请你找出其中不含有重复字符的最长字符串的长度。

3、给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。

4、定义一个函数,用来取得一个数字的所有因子,把所有因子返回

5、输入一个字符串,判断其是否是合法标识符

6、输入两个整数 输出两个整数的最大公约数


1、给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例 1:

输入: nums = [1, 2, 3, 4, 5, 6, 7], k = 3
输出: [5, 6, 7, 1, 2, 3, 4]
解释:
向右轮转 1 步: [7, 1, 2, 3, 4, 5, 6]
向右轮转 2 步: [6, 7, 1, 2, 3, 4, 5]
向右轮转 3 步: [5, 6, 7, 1, 2, 3, 4]
示例 2:            
输入:nums = [-1, -100, 3, 99], k = 2
输出:[3, 99, -1, -100]
解释:向右轮转 1 步: [99, -1, -100, 3]
向右轮转 2 步: [3, 99, -1, -100]

Console.Write("请输入一串整数,以空格隔开:");
string[] nums = (Console.ReadLine()).Split(',');
Console.Write("请输入向右轮转k个位置:");
int k = int.Parse(Console.ReadLine());

for (int i = 0; i < k; i++)
{
    string temp = nums[nums.Length - 1];

    for (int j = nums.Length - 2; j >= 0; j--)
    {
        
        nums[j + 1] = nums[j];             

    }
    nums[0] = temp;
}

// 输出结果,用逗号分隔
Console.WriteLine(string.Join(",", nums));

2、无重复字符的最长字符串 ,给定一个字符串 s 请你找出其中不含有重复字符的最长字符串的长度。

 Console.Write("请输入一个字符串:");
 string s = Console.ReadLine();

 int Maxlong = 0; //记录不含有重复字符的最长字符的长度

 // 外层循环遍历每个字符作为起始点
 for (int i = 0; i < s.Length; i++)
 {
     bool[] charExists = new bool[256];  // 定义一个长度为256的空的布尔数组(每一位默认值为false),用于记录字符是否出现过

     int count = 0;                      // 记录不含有重复字符的长度

     // 内层循环检查后续字符
     for (int j = i; j < s.Length; j++)
     {
         char c = s[j];

         if (charExists[c])
         {
             break; // 发现重复字符,终止当前子串检查
         }

         charExists[c] = true; //存储在对应ASCII编号的位置,ASCII编号  s[j]=a; a=97; charExists[a]=charExists[97]= true

         count++;
     }
     //保存最大值
     if (count > Maxlong)
     {
         Maxlong = count;
     }                
 }
 Console.WriteLine($"不含有重复字符的最长字符串的长度为: {Maxlong}");

3、给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。

示例 1:
输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。

示例 2:
输入:s = "", t = "y"
输出:"y"

Console.Write("请输入一个只包含小写字母字符串:");
string s = Console.ReadLine();

Console.Write("请再输入一个与上面输入相同但在随机位置添加一个字母的字符串:");
string t = Console.ReadLine();

int sign = 1;
for (int i = 0; i < s.Length; i++)
{
    if (s[i] == t[i])
    {
        sign++;
        continue;
        
    }
    else 
    {
        Console.WriteLine($"'{t[i]}'是那个被添加的字母");
        break;
    }
    
}
if (sign == t.Length)
{ Console.WriteLine($"'{t[s.Length]}'是那个被添加的字母"); }

4、定义一个函数,用来取得一个数字的所有因子,把所有因子返回

static void Main(string[] args)
{
    //定义一个函数,用来取得一个数字的所有因子,把所有因子返回

    foreach (var t in Factor(6))
    { 
        Console .Write(t+" ");
    }
}

static int[] Factor(int n)
{
    int count = 0;
    for (int i = 1; i <= n; i++)
    {               
         if (n%i==0)
         {
            count++;
         }                
    }

    int[] ints = new int[count];
    int m = 0;
    for (int i = 1; i <= n; i++)
    {
        if (n % i == 0)
        {
            ints[m] =i;
            m++;
        }
    }
    return ints;
}

5、输入一个字符串,判断其是否是合法标识符

//输入一个字符串,判断其是否是合法标识符
Console.WriteLine("请输入一个字符串:");
string str = Console.ReadLine();
Char[] s = str.ToCharArray(); //把字符串转换为字符数组
bool b=true;
for (int i = 0; i < s.Length; i++)
{
    if (s[0] >= '0' && s[0] <= '9')
    {
        b = false;
        Console.WriteLine("不合法");
        break;
    }
    if (b)
    {
        if (s[i] >= '0' && s[i] <= '9' || s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z' || s[i] == '_')
        {
            b = true;

        }
        else
        {

            b = false;
        }
    }
}

    if (b)
    {
        Console.WriteLine("合法");
    }
    else
    {
        Console.WriteLine("不合法");
    }

6、输入两个整数 输出两个整数的最大公约数

static void Main(string[] args)
{
    //输入两个整数 输出两个整数的最大公约数
    Console.WriteLine("输入两个整数:");
    int n=int.Parse (Console .ReadLine());
    int m=int.Parse (Console .ReadLine());

    int gcd = CalculateGCD(n, m);
    Console.WriteLine($"最大公约数是: {gcd}");
}

static int CalculateGCD(int a, int b)
{
    // 处理负数输入(转换为正数计算)
    a = Math.Abs(a);
    b = Math.Abs(b);

    while (b != 0)
    {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}   


网站公告

今日签到

点亮在社区的每一天
去签到