Leecode 1859. 将句子排序

一个 句子 指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。
我们可以给一个句子添加 从 1 开始的单词位置索引 ,并且将句子中所有单词 打乱顺序 。
比方说,句子 "This is a sentence" 可以被打乱顺序得到 "sentence4 a3 is2 This1" 或者 "is2 sentence4 This1 a3" 。
给你一个 打乱顺序 的句子 s ,它包含的单词不超过 9 个,请你重新构造并得到原本顺序的句子。
* 例 1:
输入:s = "is2 sentence4 This1 a3"
输出:"This is a sentence"
解释:将 s 中的单词按照初始位置排序,得到 "This1 is2 a3 sentence4" ,然后删除数字。

思路:

1.首先去除空格得到没有空格的字符串数组

2.遍历数组,依次处理每个单词,将每个单词的数字和字母取出来放到新的数组中即可

3.遍历新数组拼接赋值

 

题目描述的是一道编程问题,涉及到了C语言的数组操作。给定一个有序整数数组`nums`和一个目标值`target`,需要找到两个数组元素,它们的和等于目标值,并返回这两个元素的下标。这个任务可以通过双指针法来解决,从数组的两端开始向中间移动,如果当前元素的和大于目标值,则将右指针向左移一位;反之,如果小于目标值,则将左指针向右移一位。当发现两个元素之和等于目标值时,就找到了结果并立即返回。 下面是一个简单的C语言解决方案: ```c #include <stdio.h> // 返回包含两个元素下标的数组,元素之和等于target int* twoSum(int* nums, int numsSize, int target) { if (nums == NULL || numsSize < 2) { return NULL; } int left = 0; // 左指针 int right = numsSize - 1; // 右指针 while (left < right) { int sum = nums[left] + nums[right]; if (sum == target) { // 找到符合条件的元素,返回其下标 int* result = (int*)malloc(sizeof(int) * 2); result[0] = left; result[1] = right; return result; } else if (sum < target) { // 和小,右指针移到左指针左边 left++; } else { // 和大,左指针移到右指针右边 right--; } } // 没有找到符合条件的元素 free(result); // 确保释放已分配的空间 return NULL; } int main() { int nums[] = {2, 7, 11, 15}; int numsSize = sizeof(nums) / sizeof(nums[0]); int target = 9; int* result = twoSum(nums, numsSize, target); if (result != NULL) { printf("[%d, %d]\n", result[0], result[1]); // 输出:[0, 1] free(result); // 释放内存 } else { printf("未找到满足条件的元素组合\n"); } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值