1、给你两个字符串
word1
和word2
。请你从word1
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
objectivec
char * mergeAlternately(char * word1, char * word2){
int len1 = strlen(word1);
int len2 = strlen(word2);
char *merge_word = malloc(len1+len2+1);
int i , j = 0;
if(len1 <= len2){
for(i = 0; i < len1; i++){
merge_word[j++] = word1[i];
merge_word[j++] = word2[i];
}
if(len1 < len2){
for(i = len1; i < len2; i++)
merge_word[j++] = word2[i];
}
}
else{
for(i = 0; i < len2; i++){
merge_word[j++] = word1[i];
merge_word[j++] = word2[i];
}
for(i = len2; i < len1; i++){
merge_word[j++] = word1[i];
}
}
merge_word[len1+len2] = '\0';
return merge_word;
}
给你一个数组
candies
和一个整数extraCandies
,其中candies[i]
代表第i
个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的
extraCandies
个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。
objectivec
bool* kidsWithCandies(int* candies, int candiesSize, int extraCandies, int* returnSize) {
int max_candies = 0;
int i = 0;
for(i = 0; i < candiesSize; i++){
if(max_candies < candies[i]){
max_candies = candies[i];
}
}
bool *candies_res = malloc(sizeof(bool)*candiesSize);
*returnSize = candiesSize;
for(i = 0 ; i < candiesSize; i++){
if(candies[i] + extraCandies >= max_candies){
candies_res[i] = true;
}
else{
candies_res[i] = false;
}
}
return candies_res;
}
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组
flowerbed
表示花坛,由若干0
和1
组成,其中0
表示没种植花,1
表示种植了花。另有一个数n
,能否在不打破种植规则的情况下种入n
朵花?能则返回true
,不能则返回false
。示例 1:
输入:flowerbed = [1,0,0,0,1], n = 1 输出:true
objectivec
bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n) {
int unflower_count = 0;
int i , j = 0;
if(flowerbedSize ==1){
if(!flowerbed[0]){
j++;
}
}
else{
for(i = 0; i < flowerbedSize; i++){
if(i == 0 && !flowerbed[i] && !flowerbed[i+1] ){
j++;
continue;
}
if(!flowerbed[i]){
unflower_count ++;
}
else{
unflower_count = 0;
}
if(unflower_count == 3){
j++;
i--;
unflower_count = 0;
}
if(i == flowerbedSize-2 && flowerbed[i] == flowerbed[i+1] ){
j++;
break;
}
}
}
if(j >= n){
return true;
}
return false;
}
给你一个字符串
s
,仅反转字符串中的所有元音字母,并返回结果字符串。元音字母包括
'a'
、'e'
、'i'
、'o'
、'u'
,且可能以大小写两种形式出现不止一次。示例 1:
输入:s = "hello" 输出:"holle"
objectivec
char* reverseVowels(char* s) {
int len = strlen(s);
char * word = malloc(len*sizeof(char)+1);
unsigned i , j, count= 0;
//memset(word_location, -1, len*sizeof(int));
unsigned * word_location = malloc(len*sizeof(unsigned));
if(NULL == word_location){
free(word);
return NULL;
}
strcpy(word, s);
for(i = 0 ; i < len; i ++){
char lower_c = tolower(s[i]);
if (lower_c == 'a' || lower_c == 'e' || lower_c == 'i' || lower_c == 'o' || lower_c == 'u') {
word_location[count++] = i;
}
}
if(count == 1){
word[word_location[0]] = s[word_location[0]];
}
else{
for(i = 0 ; i < count/2; i++){
j = count -1-i;
word[word_location[i]] = s[word_location[j]];
word[word_location[j]] = s[word_location[i]];
}
}
free(word_location);
return word;
}