الفنون رقم 030
الفنون رقم 030
الفنون 030
هذه المادة 30
ARTS هو نشاط بدأه
由左耳朵耗子--陈皓: قم بإجراء سؤال واحد على الأقل عن خوارزمية leetcode كل أسبوع، واقرأ مقالًا تقنيًا واحدًا على الأقل باللغة الإنجليزية وعلق عليه، وتعلم مهارة فنية واحدة على الأقل، وشارك المقالة مع الآراء والأفكار. (أي أن الخوارزمية والمراجعة والنصائح والمشاركة يشار إليها باسم ARTS) وتستمر لمدة عام واحد على الأقل.
سؤال خوارزمية الخوارزمية
7. عكس عدد صحيح
الصعوبة: سهل
بالنظر إلى عدد صحيح بعلامة 32 بت، تحتاج إلى عكس كل بت في العدد الصحيح.
مثال 1:
输入: 123
输出: 321
** مثال 2:**
输入: -123
输出: -321
مثال 3:
输入: 120
输出: 21
ملاحظة:
بافتراض أن بيئتنا يمكنها فقط تخزين الأعداد الصحيحة ذات الإشارة 32 بت، فإن نطاق القيمة هو [−2<sup>31</sup>, 2<sup>31 </sup>− 1]. يرجى اتباع هذا الافتراض وإرجاع 0 إذا تجاوز العدد الصحيح بعد الانعكاس.
الحل
اللغة: ج
int reverse(int x) {
long temp,result=0;;
if(x>1534236461||x>=2147483642||x<(-2147483641)) return 0;
while(x){
temp=x%10;
x=x/10;
result=result*10+temp;
}
if(result>2147483642||result<(-2147483641)) return 0;
return result;
}
int reverse(int x) {
long temp,result=0;
while(x){
temp=x%10;
x=x/10;
result=result*10+temp;
}
if(result>INT_MAX||result<INT_MIN) return 0;
return result;
}
8. عدد صحيح لتحويل السلسلة (atoi)
الصعوبة: متوسطة
الرجاء تنفيذ دالة atoi بحيث يمكنها تحويل سلسلة إلى عدد صحيح.
أولاً، تتجاهل الدالة أحرف المسافة البادئة غير المفيدة عند الضرورة حتى تجد الحرف الأول الذي لا يحتوي على مسافة.
عندما يكون الحرف الأول غير الفارغ الذي نجده علامة موجبة أو سالبة، يتم دمج الرمز مع أكبر عدد ممكن من الأرقام المتتالية مثل الإشارة الموجبة أو السالبة للعدد الصحيح؛ إذا كان الحرف الأول غير الفارغ عبارة عن رقم، فسيتم دمجه مباشرةً مع الأحرف الرقمية المتتالية التالية لتكوين عدد صحيح.
قد تحتوي السلسلة أيضًا على أحرف إضافية بعد الجزء الصحيح الصحيح. يمكن تجاهل هذه الأحرف ويجب ألا يكون لها أي تأثير على الوظيفة.
ملاحظة: لا تحتاج وظيفتك إلى التحويل إذا كان الحرف الأول الذي لا يحتوي على مسافة في السلسلة ليس حرفًا صحيحًا صالحًا، أو كانت السلسلة فارغة، أو كانت السلسلة تحتوي على أحرف مسافات بيضاء فقط.
على أية حال، إذا لم تتمكن الدالة من إجراء تحويل صالح، قم بإرجاع 0.
الوصف:
بافتراض أن بيئتنا يمكنها فقط تخزين الأعداد الصحيحة ذات الإشارة 32 بت، فإن نطاق القيم هو [−2<sup>31</sup>, 2<sup>31 </sup>− 1]. إذا تجاوزت القيمة هذا النطاق، تُرجع qing INT_MAX (2<sup>31 </sup>− 1) أو INT_MIN (−2<sup>31</sup>).
مثال 1:
输入: "42"
输出: 42
مثال 2:
输入: " -42"
输出: -42
解释: 第一个非空白字符为 '-', 它是一个负号。
我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
مثال 3:
输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。
مثال 4:
输入: "words and 987"
输出: 0
解释: 第一个非空字符是 'w', 但它不是数字或正、负号。
因此无法执行有效的转换。```
**مثال 5:**
输入: “-91283472332” 输出: -2147483648 解释: 数字 “-91283472332” 超过 32 位有符号整数范围。 因此返回 INT_MIN (−231) 。
#### الحل
اللغة: **ج**
```c
#include "limits.h"
int myAtoi(char* str) {
long temp = 0;
const char *ptr = str; //ptr保存str字符串开头
while (*str) {
if (*str == ' ') {
str++;
continue;
}
if (*str == '-') {
str++;
long tem = 0;
while (*str) {
if (*str>= '0' && *str<= '9') {
tem= tem * 10 + (*str - '0');
if(-tem<INT_MIN)
return INT_MIN;
str++;
continue;
}
else{
return -tem;
}
}
return -tem;
}
else if(*str == '+'){
str++;
long tem = 0;
while (*str) {
if (*str>= '0' && *str<= '9') {
tem= tem * 10 + (*str - '0');
if(tem> INT_MAX)
return INT_MAX;
str++;
continue;
}
else{
return tem;
}
}
return tem;
}
else{
int tem = 0;
while (*str) {
if (*str>= '0' && *str<= '9') {
tem= tem * 10 + (*str - '0');
str++;
if(tem> INT_MAX)
return INT_MAX;
continue;
}
else{
return tem;
}
}
return tem;
}
break;
}
return 0;
}
تمت الموافقة على الإرسال الأول، لكن الكود كان قبيحًا
وهذا هو الكود بعد الترتيب:
int myAtoi(char* str) {
while (*str) {
if (*str == ' ') {
str++;
continue;
}
if(*str == '-' || *str == '+' || (*str>= '0' && *str<= '9')){
int f=1;
if ( *str == '-') {
f=-1;
}
if (*str == '-' || *str == '+') {
str++;
}
long tem = 0;
while (*str) {
if (*str>= '0' && *str<= '9') {
tem= tem * 10 + (*str - '0');
if (f==1) {
if(tem> INT_MAX)
return INT_MAX;
}
else{
if(-tem<INT_MIN)
return INT_MIN;
}
str++;
continue;
}
else{
return tem * f;
}
}
return tem * f;
}
else{
return 0;
}
}
return 0;
}
الكود أقصر، ولكن ليس من السهل فهمه مثل الكود الأول.
مراجعة
https://dandan2009.github.io/2019/04/25/ios-architecture-patterns/ تجري هذه المقالة تحليلًا مقارنًا لبنيات MVC وMVP وMVVM وVIPER، وهي بنيات شائعة الاستخدام لتطوير iOS.
نصائح
يمكن لوكلاء UIGestureRecognizer التاليين حل مشكلة تعارضات الإيماءات:
// الطريقة التي يتم استدعاؤها عند بدء التعرف على الإيماءات. سيؤدي إرجاع NO إلى إنهاء التعرف ولن يؤدي بعد ذلك إلى تشغيل الإيماءات. الاستخدام: يمكن استخدام التعرف على الإيماءات في الموضع المحدد بواسطة عنصر التحكم.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer ينبغي أن ReceiveTouch:(UITouch *)touch { العودة نعم؛ }
// سواء كان تشغيل الإيماءات المتعددة مدعومًا، قم بإرجاع نعم، ثم يمكن لإيماءات متعددة تشغيل الطريقة في نفس الوقت، وإرجاع لا، فهو حصري بشكل متبادل. // ما إذا كان يُسمح لأدوات التعرف على الإيماءات المتعددة بالتعرف معًا، وما إذا كان التعرف على الإيماءات لعنصر التحكم يمنع التعرف على الإيماءات من الاستمرار في الانتشار للأسفل. الإرجاع الافتراضي هو NO؛ إذا كانت الإجابة بنعم، بعد أن يقوم الكائن العلوي من سلسلة المستجيب بتشغيل التعرف على الإيماءة، وإذا أضاف الكائن السفلي أيضًا الإيماءة وتعرف عليها بنجاح، فسوف يستمر في التنفيذ، وإلا فلن يستمر في الانتشار بعد التعرف على الكائن العلوي. -(BOOL)gestureRecognizer:(UIGestureRecognizer*) يجب أن يتعرف على GestureRecognizerSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer{
}
شارك
أقوم مؤخرًا بترميم منزل، وأخطط لتوفير الماء والكهرباء بنفسي. لقد تم الماء بالفعل. تجربتي بعد القيام بذلك هي أنه يبدو من الصعب القيام بذلك، ولكن لا يمكن القول بأنه صعب. حتى لو كانت هذه هي المرة الأولى التي أقوم فيها بذلك، تحدث دائمًا بعض الأشياء غير المتوقعة. على سبيل المثال، عند استخدام أداة صهر ساخنة لتولي الأنبوب، يجب عليك التحكم في درجة الحرارة. في البداية، أخذت بعض الأنابيب الخردة وجربتها مسبقًا. كان بعضها مثنيًا وبعضها الآخر مكويًا. كانت العملية شاقة بعض الشيء، لكن النتائج كانت لا تزال مرضية. في الواقع، عمل أنابيب المياه هو نفس القيام بالتطوير، وكلاهما يتطلب خبرة.
What to read next
Want more posts about ARTS?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home