黑马程序员技术交流社区
标题:
求一道提的简单做法
[打印本页]
作者:
kakam
时间:
2016-8-11 00:43
标题:
求一道提的简单做法
过滤输入的字符串,只保留这个字符串的小写字母
过滤后求每个小写字母出现的次数
作者:
anan安
时间:
2016-8-11 00:43
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
// 思路
/*
定义一个数组接受这个字符串 长度为100
提示用户输入
fegets接受数组
在控制台上输入一个字符串,过滤这个字符串,只保留这个字符串中的小写字母.
对于上面过滤之后的字符串,统计每个字母的个数,打印出每个字母对应的个数
*/
//定义一个数组接受这个字符串 长度为100
char arr[100] = {};
//提示用户输入
NSLog(@"请输入椅子字符串:");
//fegets接受数组
rewind(stdin);
fgets(arr, 100, stdin);
//求数组中字符的个数
size_t len = strlen(arr);
//在控制台上输入一个字符串,过滤这个字符串,只保留这个字符串中的小写字母.
for (int i = 0 ,j =0 ; i < len; i++) {
if (arr[i] >= 'a'&&arr[i]<= 'z') {
arr[j] = arr[i];
j++;
}
else{
arr[i] = '\0';}
}
//求出筛选过后的只有小写字母字符的长度
size_t len1 = strlen(arr);
//打印出筛选过后的数组
for (int i = 0 ; i < len1 ; i++) {
printf("%c",arr[i]);
}
NSLog(@"\n");
//统计每个字母的个数,打印出每个字母对应的个数
for (int i = 'a'; i <= 'z'; i++) {
int count = 0;
for (int j = 0; j<len1 ; j++) {
if (i == arr[j]) {
count ++;
}
}
if (count != 0) {
printf("%c-%d\t",i,count);
}
}
作者:
anan安
时间:
2016-8-11 00:44
#import <Foundation/Foundation.h>
1.autorelease
// 假设有个Person类,请问p1、p2、p3、p4指向的对象分别在第几行代码后会销毁
int main()
{
Person *p1 = nil;
@autoreleasepool
{
p1 = [[Person alloc] init];
}
@autoreleasepool
{
[p1 autorelease];
Person *p2 = [[[Person alloc] init] autorelease];
Person *p3 = [[Person alloc] init];
@autoreleasepool
{
@autoreleasepool
{
[p3 autorelease];
Person *p4 = [[Person alloc] init];
}// P3被销毁
[p4 autorelease];
}//p4被销毁
}//p1 p2被销毁
return 0;
}
2.set方法内存管理
@class Dog;
@interface Person : NSObject
@property (nonatomic, retain) Dog *dog;
@end
@implementation Person
- (void)dealloc
{
self.dog = nil;
[super dealloc];
}
@end
// 请问main函数中有无代码出现内存泄露
int main()
{
@autoreleasepool
{
Person *p = [[[Person alloc] init] autorelease];
p.dog = [[Dog alloc] init];
[[[Person alloc] init] autorelease].dog = [[[Dog alloc] init] autorelease];
}// 有 当[[[Person alloc] init] autorelease]被销毁以后重写的dealloc方法并没有将dog属性release一次
return 0;
}
3.set方法内存管理
@class Dog;
@interface Person : NSObject
@property (nonatomic, retain) Dog *dog;
@end
@implementation Person
- (void)dealloc
{
self.dog = nil;
[super dealloc];
}
@end
// 请问d1、d2、d3、p1、p2指向的对象分别在第几行代码后被销毁
int main()
{
@autoreleasepool
{
Dog *d1 = [[Dog alloc] init];
Dog *d2 = [[Dog alloc] init];
Dog *d3 = [[[Dog alloc] init] autorelease];
Person *p2 = [[Person alloc] init];
p2.dog = d2;
[d2 release]; //D2被释放
@autoreleasepool
{
Person *p1 = [[[Person alloc] init] autorelease];
p1.dog = d1;
[d1 release]; //D1被释放了
}
p2.dog = d3;
[p2 release];
} // D3被释放
return 0;
}
作者:
anan安
时间:
2016-8-11 00:47
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
// 思路
/*
定义一个数组接受这个字符串 长度为100
提示用户输入
fegets接受数组
在控制台上输入一个字符串,过滤这个字符串,只保留这个字符串中的小写字母.
对于上面过滤之后的字符串,统计每个字母的个数,打印出每个字母对应的个数
*/
//定义一个数组接受这个字符串 长度为100
char arr[100] = {};
//提示用户输入
NSLog(@"请输入椅子字符串:");
//fegets接受数组
rewind(stdin);
fgets(arr, 100, stdin);
//求数组中字符的个数
size_t len = strlen(arr);
//在控制台上输入一个字符串,过滤这个字符串,只保留这个字符串中的小写字母.
for (int i = 0 ,j =0 ; i < len; i++) {
if (arr[i] >= 'a'&&arr[i]<= 'z') {
arr[j] = arr[i];
j++;
}
else{
arr[i] = '\0';}
}
//求出筛选过后的只有小写字母字符的长度
size_t len1 = strlen(arr);
//打印出筛选过后的数组
for (int i = 0 ; i < len1 ; i++) {
printf("%c",arr[i]);
}
NSLog(@"\n");
//统计每个字母的个数,打印出每个字母对应的个数
for (int i = 'a'; i <= 'z'; i++) {
int count = 0;
for (int j = 0; j<len1 ; j++) {
if (i == arr[j]) {
count ++;
}
}
if (count != 0) {
printf("%c-%d\t",i,count);
}
}
作者:
yuxing
时间:
2016-8-11 09:56
我就写个思路,懒得写了,直接拿正则做
String s = new Scanner(System.in).nextLine();
s = s.replaceAll("[^a-z]","");
获取出现次数就不用我教了吧? 用HashMap
作者:
yuxing
时间:
2016-8-11 10:00
奥,没注意. 是IOS的~~
作者:
Liangfwu
时间:
2016-8-11 12:57
不知道你们的和我们学的Javaee是不是相同的,如果昌的话就定义这个字符串String str="....",---〉把字符串转成字符数组char[] arr=str.toCharArray(),然后一一遍历数组元素并有循环语句中加入判断,判断是不是在字符的范围内,是的话就用计数器进行加一次
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2