Cracking the coding interview--Q1.2
2013-07-11 17:02 Loull 阅读(263) 评论(0) 编辑 收藏 举报题目
原文:
Write code to reverse a C-Style String. (C-String means that “abcd” is represented as five characters, including the null character.)
译文:
写代码翻转一个C风格的字符串。(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的 结束字符)
解答
这道题如果就是要考察你有没有注意到C风格字符串最后的那个结束符,那我觉得还是像书 上写的那样,在代码中有所体现。代码如下:
java:
package cha1; public class A002 { public static char[] swap(char[] cstr) { int len = cstr.length; char[] cs = new char[len]; for (int i=0; i<len; i++) { cs[len-i-1] = cstr[i]; } return cs; } public static void main(String[] args) { char[] cs = new char[5]; cs[0] = 'l'; cs[1] = 'o'; cs[4] = 'u'; System.out.println(swap(cs)); } }
c++
#include <iostream> #include <cstring> using namespace std; void swap(char &a, char &b){ a = a^b; b = a^b; a = a^b; } void reverse2(char *s){ int n = strlen(s); for(int i=0; i<n/2; ++i) swap(s[i], s[n-i-1]); } void reverse1(char *s){ if(!s) return; char *p = s, *q = s; while(*q) ++q; --q; while(p < q) swap(*p++, *q--); } int main(){ char s[] = "1234567890"; reverse1(s); cout<<s<<endl; return 0; }