wordpress 双语站点自己使用原生php做网站性能
news/
2025/9/26 16:28:39/
文章来源:
wordpress 双语站点,自己使用原生php做网站性能,网站排名优化策划,凤翔网站建设目录
1.题目描述 一
2.解题想法图解
2.1直接解 2.2巧解
3.题目描述二
3.1.1思路1 3.1.2 思路2 4.结语 1.题目描述 一 实现现一个函数#xff0c;可以左旋字符串中的k个字符。 例如#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2.解题想法图解
2.… 目录
1.题目描述 一
2.解题想法图解
2.1直接解 2.2巧解
3.题目描述二
3.1.1思路1 3.1.2 思路2 4.结语 1.题目描述 一 实现现一个函数可以左旋字符串中的k个字符。 例如 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2.解题想法图解
2.1直接解 当我们要进行多次反转只用循环执行上述过程就行了 我们来看一下解答代码
void left_reverse(char* str, int k)
{int sz strlen(str);while (k){char temp *str;int i 0;for (i 0; i sz - 1; i){*(stri) *(str i 1);}*(str sz - 1) temp;k--;}}
int main()
{char arr[] ABCD;int k 0;printf(请输入要旋转的次数\n);scanf(%d, k);left_reverse(arr, k);printf(%s\n, arr);return 0;
} 2.2巧解 根据上图我们不难总结出这样的规律 字符串左旋一次的结果就是将字符串第一个字符进行翻转然后剩余的字符在进行逆序最后整体逆序 字符串左旋两次的结果就是将字符串前两个字符进行逆序然剩下的字符串再逆序最后整体逆序就可以得到。 我们来看一下实现代码;
void reverse(char* left, char* right)
{assert(left right);//涉及到解引用断言一下while (left right){char temp *left;*left *right;*right temp;left;right--;}
}
void left_reverse(char* str, int k)
{int len strlen(str);//为了实现逆序//先实现左边逆序reverse(str, str k - 1);//右边逆序reverse(str k, str len - 1);//整体逆序reverse(str, str len - 1);
}int main()
{char arr[] ABCD;int k 0;printf(请输入要旋转的次数\n);scanf(%d, k);left_reverse(arr, k);printf(%s\n, arr);return 0;
} 3.题目描述二 写一个函数判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如给定s1 AABCD和s2 BCDAA返回1 给定s1abcd和s2ACBD返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一个字符得到DAABC 3.1.1思路1 我们直接将其中一个字符串进行左旋每次旋转后都与宁外一个字符串进行比较看是否相等。我们旋转的次数选择应该和我们选择进行左旋的字符串的长度相等因为要保证每一次的左旋结果都没有漏掉。 int is_left_move(char* str1, char* str2)
{int sz strlen(str1);int k sz-1;while (k){char temp *str1;int i 0;for (i 0; i sz - 1; i){*(str1i) *(str1 i 1);}*(str1 sz - 1) temp;if (strcmp(str1, str2) 0)return 1;k--;}return 0;
}int main()
{char arr1[] abcdef;char arr2[] cdefab;int ret is_left_move(arr1, arr2);if (ret 1){printf(YES\n);}else{printf(NO\n);}return 0;
} 3.1.2 思路2 看一下代码实现
int is_left_move(char* str1, char* str2)
{int len1 strlen(str1);int len2 strlen(str2);if (len1 ! len2)return 0;strncat(str1, str1, len1);if (strstr(str1, str2) NULL)return 0;elsereturn 1;
}int main()
{char arr1[] abcdef;char arr2[] cdefab;int ret is_left_move(arr1, arr2);if (ret 1){printf(YES\n);}else{printf(NO\n);}return 0;
} 4.结语 以上就是本期的所有内容知识含量蛮多大家可以配合解释和原码运行理解。创作不易大家如果觉得还可以的话欢迎大家三连有问题的地方欢迎大家指正一起交流学习一起成长我是Nicn正在c方向前行的奋斗者感谢大家的关注与喜欢。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918534.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!