Easy-6
来源:互联网 发布:wlan无法连接到网络 编辑:程序博客网 时间:2024/06/07 20:51
leetcode 500. Keyboard Row
Given a List of words, return the words that can be typed using letters of alphabet on only one row's of American keyboard like the image below.
Example 1:
Input: ["Hello", "Alaska", "Dad", "Peace"]Output: ["Alaska", "Dad"]
Note:
- You may use one character in the keyboard more than once.
- You may assume the input string will only contain letters of alphabet.
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int getrow(char c,int k)
{
char* table[3] = { "zxcvbnm","asdfghjkl","qwertyuiop" };
int i, j;
if(k>0)
{
if(strchr(table[k],c)!=NULL)
{
return k;
}else
{
return -1;
}
}
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int getrow(char c,int k)
{
char* table[3] = { "zxcvbnm","asdfghjkl","qwertyuiop" };
int i, j;
if(k>0)
{
if(strchr(table[k],c)!=NULL)
{
return k;
}else
{
return -1;
}
}
for (i = 0; i<2; i++)
{
if(strchr(table[i],c)!=NULL)
{
return i;
}
}
return 2;
}
{
if(strchr(table[i],c)!=NULL)
{
return i;
}
}
return 2;
}
char** findWords(char** words, int wordsSize, int* returnSize) {
char** result = (char**)malloc(wordsSize*sizeof(char*));
int result_len = 0;
int j = 0;
for (int i = 0; i<wordsSize; i++)
{
int length = strlen(words[i]);
int row = getrow(words[i][0] + 32,-1);
for (j = 1; j<length; j++)
{
if (row != getrow(words[i][j],row))
{
break;
}
}
if (j == length)
{
result[result_len] = (char *)malloc(length);
strcpy(result[result_len], words[i]);
returnSize[result_len] = length;
result_len++;
}
}
return result;
}
int result_len = 0;
int j = 0;
for (int i = 0; i<wordsSize; i++)
{
int length = strlen(words[i]);
int row = getrow(words[i][0] + 32,-1);
for (j = 1; j<length; j++)
{
if (row != getrow(words[i][j],row))
{
break;
}
}
if (j == length)
{
result[result_len] = (char *)malloc(length);
strcpy(result[result_len], words[i]);
returnSize[result_len] = length;
result_len++;
}
}
return result;
}
AC :(ANSWER FROM WEB)
int inRow(char *row,int length,char c){
for (int i =0; i < length; i++) {
int a = row[i];
if (a == c || (a == c + 32)) {
return 1;
}
}
return 0;
}
char** findWords(char** words,int wordsSize,int* returnSize){
char a[10] = {'q','w','e', 'r', 't', 'y','u','i', 'o', 'p'};
char b[9] = {'a','s','d', 'f', 'g', 'h','j','k', 'l'};
char c[7] = {'z','x','c', 'v', 'b', 'n','m'};
char **rows = (char **)malloc(sizeof(char *)*wordsSize);
int size = 0;
for (int i =0; i < wordsSize; i++) {
char *word = words[i];
int j = 0;
int row = 0;
int inOneRow = 1;
while (word[j] != '\0') {
if (row == 0) {
if (inRow(a, 10, word[j])) {
row = 1;
continue;
}
if (inRow(b, 9, word[j])) {
row = 2;
continue;
}
if (inRow(c, 7, word[j])) {
row = 3;
continue;
}
} else {
if ((inRow(a, 10, word[j]) && row != 1) || (inRow(b, 9, word[j]) && row != 2) || (inRow(c, 7, word[j]) && row != 3)) {
inOneRow = 0;
break;
}
}
j++;
}
if (inOneRow) {
rows[size] = word;
size++;
}
}
*returnSize = size;
return rows;
}
for (int i =0; i < length; i++) {
int a = row[i];
if (a == c || (a == c + 32)) {
return 1;
}
}
return 0;
}
char** findWords(char** words,int wordsSize,int* returnSize){
char a[10] = {'q','w','e', 'r', 't', 'y','u','i', 'o', 'p'};
char b[9] = {'a','s','d', 'f', 'g', 'h','j','k', 'l'};
char c[7] = {'z','x','c', 'v', 'b', 'n','m'};
char **rows = (char **)malloc(sizeof(char *)*wordsSize);
int size = 0;
for (int i =0; i < wordsSize; i++) {
char *word = words[i];
int j = 0;
int row = 0;
int inOneRow = 1;
while (word[j] != '\0') {
if (row == 0) {
if (inRow(a, 10, word[j])) {
row = 1;
continue;
}
if (inRow(b, 9, word[j])) {
row = 2;
continue;
}
if (inRow(c, 7, word[j])) {
row = 3;
continue;
}
} else {
if ((inRow(a, 10, word[j]) && row != 1) || (inRow(b, 9, word[j]) && row != 2) || (inRow(c, 7, word[j]) && row != 3)) {
inOneRow = 0;
break;
}
}
j++;
}
if (inOneRow) {
rows[size] = word;
size++;
}
}
*returnSize = size;
return rows;
}
0 0
- Easy-6
- Leetcode--easy系列6
- Leetcode(6) - easy
- easy
- Easy
- [Leetcode 6, Easy] Zigzag Conversion
- <LeetCode><Easy> 6 ZigZag Conversion
- Easy 6题 ZigZag Conversion
- Easy-题目6:283. Move Zeroes
- UOJ Easy Round #6 题解(待续)
- NOI4.6 1455:An Easy Problem
- [Easy]C++ 第一期 6道
- 使用dropwizard(6)-国际化-easy-i18n
- LeetCode-6-ZigZag Conversion(找规律)-Easy
- Multi-University 2015 #6 E(hdu 5357 Easy Sequence)
- leetcode 6: ZigZag Convertion(easy,知识点:string, vector)
- Easy 6 Merge Two Sorted Lists(21)
- LeetCode-Easy刷题(6) Merge Two Sorted Lists
- pandas学习笔记-DataFrame(2)
- LightOJ 1197(大数范围筛区间内素数个数)
- 旅游管理信息系统
- Linux邮件发送时问题send-mail: warning: inet_protocols解决方案
- sklearn 标准化训练数据
- Easy-6
- JSP标签
- BASS音频库使用的入门教程
- linux配置tomcat+mysql+jdk
- 自己动手用C扩展PHP(二)
- LightOJ 1234(调和级数、有通项公式的发散数列求和)
- spring集成redis
- UEditor之实现配置简单的图片上传示例
- 网页布局,右边距margin为0