目录
- 一、题目
- 使用方法
- 二、选择题
- 总结
题目牛客网
一、题目
给定一个字符串比如“abcdef”,要求写个函数变成“defabc”,位数是可变的。
分析 首先,需要确定字符串的分割点。这个点可以是字符串长度的一半,也可以是任何选择的索引。 然后,可以将字符串前部分和后部分分别反转。
最后,将反转的后半部分和前半部分拼接一起。
如何实现代码
使用str.substring(0,n)从原始字符串str中提取从索引0开始到索引n-1的字符串substr1.
使用str.substring(n)从原始字符串str中提取从索引 n开始字符串末尾的字符串substr2.
使用StringBuilder对象调用reverse()方法来反转substr1得到reverse()1,substr2反转。
//方法
public static String shifString(String str ,int n){
String substr1 = str.substring(0,n);
String substr2 = str.substring(n);
String re1 = new StringBuilder(substr1).reverse().toString();
String re2=new StringBuilde(substr2).reverse().toString();
return new StringBuilder(re1).append(re2).reverse().toString();
}
二、选择题
1.执行以下程序,输出结果为()
l1 = [1,2]
l2 = [3,4]
print(id(l1) == id(l1.extend(l2)))
A.False
B.True
C.None
D.抛出异常
正确答案:A
在Python中,id() 函数返回对象的内存地址。extend()
方法用于将一个列表中的所有元素追加到另一个列表的末尾,这个方法会修改原列表,而不是创建一个新的列表。
首先,l1 是一个包含 [1, 2] 的列表。然后,创建了另一个列表 l2,包含 [3, 4]。调用 l1.extend(l2) 会将 l2 的元素追加到 l1 的末尾,结果 l1 变成了 [1, 2, 3, 4]。由于 extend() 方法是就地修改 l1 的,它不会返回一个新的列表对象,而是返回 None。
因此,id(l1) 和id(l1.extend(l2)) 都是 l1 的内存地址,但因为 extend() 返回 None,所以 id(l1.extend(l2)) 实际上等同于 id(None)。所以,id(l1) == id(l1.extend(l2)) 的比较实际上是 id(l1) == id(None),这显然是 False。
正确答案是 A: False。
2.下列关于 XGBoost 的说法,错误的是()
A.XGBoost 支持单颗树粒度的并行
B.XGBoost 支持特征抽样
C.XGBoost 在代价函数里加入了正则项
D.XGBoost 支持对缺失值的自动处理
正确答案是 A。
XGBoost 是一种基于梯度提升框架的集成学习算法,它具有以下特点:
B. XGBoost 支持特征抽样,这可以减少模型训练时的计算量,同时可以提高模型的泛化能力。
C. XGBoost 在其代价函数中加入了正则项,这有助于防止模型过拟合,正则项通常包括树的复杂度(例如树的深度和叶子节点的个数)。
D. XGBoost 支持对缺失值的自动处理,它使用一种称为“分裂寻找”的方法,在节点分裂时,如果特征值缺失,算法会尝试找到最佳的分裂点。
而 A 选项是错误的,因为 XGBoost 并不支持单颗树粒度的并行学习。
XGBoost的并行是在树的构建过程中实现的,即在构建多棵树时可以并行化,而不是在单棵树的构建过程中。这意味着在训练单个决策树时,XGBoost仍然是串行的。
总结
哇塞!每日坚持练习,不断提升自己的能力,加油加油!