给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
有一种LeetCode里面很少用C的用户的错觉……
char* reverseWords(char* s) {
int len = strlen(s);
char *t = (char*)malloc((len+2)*sizeof(char));
int count = 0;
int k = 0;
for(int i=0;i<=len;i++)
{
if(s[i]==' ')
{
for(int j=0;j<count;j++)
{
t[k++] = s[i-j-1];
//printf("%c",t[k-1]);
}
t[k++] = ' ';//printf(" ");
count = 0;
}
else if(s[i]=='\0')
{
for(int j=0;j<count;j++)
{
t[k++] = s[i-j-1];
//printf("%c",t[k-1]);
}
count=0;
}
else
{
count++;
}
}
t[k] = '\0';
return t;
}
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。
你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。
示例:
输入: 4
输出: false
解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;
因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。
巴什博奕…
bool canWinNim(int n) {
if(n%4==0)
return false;
else return true;
}
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
示例 1:
输入: [1,2,3,1] 输出: true
示例 2:
输入: [1,2,3,4] 输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2] 输出: true
我选择暴力…
bool containsDuplicate(int* nums, int numsSize) {
for(int i=0;i<numsSize;i++)
{
for(int j=i+1;j<numsSize;j++)
{
if(nums[i]==nums[j])
return true;
}
}
return false;
}
咸鱼的我暂时就先写这么多了……