You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组偶位字符组交换及字符串编码函数开发技术咨询

我来帮你详细实现这两个编程需求,下面分两部分逐一说明并给出代码示例:

需求1:数组中相邻偶位字符对交换

首先明确需求:将数组按每两个字符为一组,把相邻的两组交换位置(即第1组与第2组交换,第3组与第4组交换,以此类推)。如果数组总长度无法被4整除,剩余的1或2个字符保持原位置不变。

举个直观例子:

  • 原数组:['A','B','C','D','E','F','G']
  • 分组后:[AB, CD, EF, G]
  • 交换后:[CD, AB, EF, G]

代码实现(C语言)

void swap_pair_groups(char arr[], int length) {
    // 每次处理4个字符(两组),步长设为4
    for (int i = 0; i < length - 3; i += 4) {
        // 交换第一组和第二组的第一个字符
        char temp = arr[i];
        arr[i] = arr[i+2];
        arr[i+2] = temp;
        
        // 交换第一组和第二组的第二个字符
        temp = arr[i+1];
        arr[i+1] = arr[i+3];
        arr[i+3] = temp;
    }
}
需求2:字符串编码函数encode

根据需求描述和示例,编码规则可以拆解为:

  1. 将字符串按顺序每两个字符分为一组,每组的第一个字符归入组A,第二个字符归入组B;
  2. 若字符串长度为奇数,最后一个单独字符直接保留在结果末尾;
  3. 按「组B的第n个字符 + 组A的第n个字符」的顺序合并两组,最后追加单独字符(如果有)。

比如示例"KILOS":

  • 分组:组A = ['K','L'],组B = ['I','O'],单独字符'S'
  • 合并:I+K + O+L + S → "IKOLS"

代码实现(C语言)

要求s2指向编码后的结果字符串,我们需要先为s2分配足够的内存:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void encode(const char* s1, char** s2) {
    int len = strlen(s1);
    // 分配内存,长度与原字符串一致(含结束符)
    *s2 = (char*)malloc((len + 1) * sizeof(char));
    if (*s2 == NULL) {
        perror("Memory allocation failed");
        return;
    }
    
    int result_idx = 0;
    // 处理每一组两个字符
    for (int i = 0; i < len - 1; i += 2) {
        // 先放入组B的字符(原字符串第i+1位)
        (*s2)[result_idx++] = s1[i+1];
        // 再放入组A的字符(原字符串第i位)
        (*s2)[result_idx++] = s1[i];
    }
    // 处理奇数长度的最后一个字符
    if (len % 2 != 0) {
        (*s2)[result_idx++] = s1[len - 1];
    }
    // 添加字符串结束符
    (*s2)[result_idx] = '\0';
}

// 测试示例
int main() {
    const char* test_str = "KILOS";
    char* result = NULL;
    encode(test_str, &result);
    printf("编码结果:%s\n", result); // 输出 IKOLS
    free(result); // 记得释放内存
    return 0;
}

额外说明

  • 函数通过二级指针s2返回编码后的字符串,调用端需要负责释放内存,避免泄漏;
  • 逻辑完全匹配示例要求,奇数长度的末尾字符会被正确保留;
  • 内存分配做了错误判断,提升代码健壮性。

内容的提问来源于stack exchange,提问作者user8249477

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:58:53